# HG changeset patch # User Thien-Thi Nguyen # Date 1154290776 0 # Node ID 5b336ff592bbce3eab86451569e89bf0672506a9 # Parent c348014e6508b24bce7d70fa66bf51abaa28a7d1 (url-hexify-string): Rewrite. diff -r c348014e6508 -r 5b336ff592bb lisp/url/url-util.el --- a/lisp/url/url-util.el Sun Jul 30 12:45:36 2006 +0000 +++ b/lisp/url/url-util.el Sun Jul 30 20:19:36 2006 +0000 @@ -352,17 +352,18 @@ This is taken from RFC 2396.") ;;;###autoload -(defun url-hexify-string (str) - "Escape characters in a string." - (mapconcat - (lambda (char) - ;; Fixme: use a char table instead. - (if (not (memq char url-unreserved-chars)) - (if (> char 255) - (error "Hexifying multibyte character %s" str) - (format "%%%02X" char)) - (char-to-string char))) - str "")) +(defun url-hexify-string (string) + "Return a new string that is STRING URI-encoded. +First, STRING is converted to utf-8, if necessary. Then, for each +character in the utf-8 string, those found in `url-unreserved-chars' +are left as-is, all others are represented as a three-character +string: \"%\" followed by two lowercase hex digits." + (mapconcat (lambda (char) + (if (memq char url-unreserved-chars) + (char-to-string char) + (format "%%%02x" char))) + (encode-coding-string string 'utf-8 t) + "")) ;;;###autoload (defun url-file-extension (fname &optional x)