2010-03-30 Martin Stjernholm <mast@lysator.liu.se>
authorKatsumi Yamaoka <yamaoka@jpl.org>
Tue, 30 Mar 2010 05:45:51 +0000 (05:45 +0000)
committerKatsumi Yamaoka <yamaoka@jpl.org>
Tue, 30 Mar 2010 05:45:51 +0000 (05:45 +0000)
 * mm-decode.el (mm-add-meta-html-tag): Added option to override the
 charset.
 * gnus-art.el (gnus-article-browse-html-parts): Force the correct
 charset into the <meta> tag when the article is encoded to utf-8.

lisp/ChangeLog
lisp/gnus-art.el
lisp/mm-decode.el

index b244dd3..712cc97 100644 (file)
@@ -1,3 +1,11 @@
+2010-03-30  Martin Stjernholm  <mast@lysator.liu.se>
+
+       * mm-decode.el (mm-add-meta-html-tag): Added option to override the
+       charset.
+
+       * gnus-art.el (gnus-article-browse-html-parts): Force the correct
+       charset into the <meta> tag when the article is encoded to utf-8.
+
 2010-03-30  Katsumi Yamaoka  <yamaoka@jpl.org>
 
        * gnus-art.el (gnus-article-browse-delete-temp-files): Delete
index 9288101..086eb47 100644 (file)
@@ -2893,7 +2893,8 @@ message header will be added to the bodies of the \"text/html\" parts."
             ;; Add a meta html tag to specify charset and a header.
             (cond
              (header
-              (let (title eheader body hcharset coding cid-image-dir)
+              (let (title eheader body hcharset coding force-charset
+                          cid-image-dir)
                 (with-temp-buffer
                   (mm-enable-multibyte)
                   (setq case-fold-search t)
@@ -2917,7 +2918,8 @@ message header will be added to the bodies of the \"text/html\" parts."
                             title (when title
                                     (mm-encode-coding-string title charset))
                             body (mm-encode-coding-string (mm-get-part handle)
-                                                          charset))
+                                                          charset)
+                            force-charset t)
                     (setq hcharset (mm-find-mime-charset-region (point-min)
                                                                 (point-max)))
                     (cond ((= (length hcharset) 1)
@@ -2948,7 +2950,8 @@ message header will be added to the bodies of the \"text/html\" parts."
                                       body (mm-encode-coding-string
                                             (mm-decode-coding-string
                                              (mm-get-part handle) body)
-                                            charset))))
+                                            charset)
+                                      force-charset t)))
                           (setq charset hcharset
                                 eheader (mm-encode-coding-string
                                          (buffer-string) coding)
@@ -2962,7 +2965,7 @@ message header will be added to the bodies of the \"text/html\" parts."
                   (mm-disable-multibyte)
                   (insert body)
                   (when charset
-                    (mm-add-meta-html-tag handle charset))
+                    (mm-add-meta-html-tag handle charset force-charset))
                   (when title
                     (goto-char (point-min))
                     (unless (search-forward "<title>" nil t)
index 58ba3ec..171afac 100644 (file)
@@ -1258,11 +1258,11 @@ PROMPT overrides the default one used to ask user for a file name."
           (mm-save-part-to-file handle file)
           file))))
 
-(defun mm-add-meta-html-tag (handle &optional charset)
+(defun mm-add-meta-html-tag (handle &optional charset force-charset)
   "Add meta html tag to specify CHARSET of HANDLE in the current buffer.
 CHARSET defaults to the one HANDLE specifies.  Existing meta tag that
-specifies charset will not be modified.  Return t if meta tag is added
-or replaced."
+specifies charset will not be modified unless FORCE-CHARSET is non-nil.
+Return t if meta tag is added or replaced."
   (when (equal (mm-handle-media-type handle) "text/html")
     (when (or charset
              (setq charset (mail-content-type-get (mm-handle-type handle)
@@ -1274,7 +1274,8 @@ or replaced."
        (if (re-search-forward "\
 <meta\\s-+http-equiv=[\"']?content-type[\"']?\\s-+content=[\"']\
 text/\\(\\sw+\\)\\(?:\;\\s-*charset=\\(.+\\)\\)?[\"'][^>]*>" nil t)
-           (if (and (match-beginning 2)
+           (if (and (not force-charset)
+                    (match-beginning 2)
                     (string-match "\\`html\\'" (match-string 1)))
                ;; Don't modify existing meta tag.
                nil