changeset 107581:1e23ce3cbd8b

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.
author Katsumi Yamaoka <yamaoka@jpl.org>
date Tue, 30 Mar 2010 04:44:38 +0000
parents 7e2e7d245782
children 97afa1904e05 5540f668f288
files lisp/gnus/ChangeLog lisp/gnus/gnus-art.el lisp/gnus/mm-decode.el
diffstat 3 files changed, 20 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/gnus/ChangeLog	Tue Mar 30 04:12:11 2010 +0000
+++ b/lisp/gnus/ChangeLog	Tue Mar 30 04:44:38 2010 +0000
@@ -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
--- a/lisp/gnus/gnus-art.el	Tue Mar 30 04:12:11 2010 +0000
+++ b/lisp/gnus/gnus-art.el	Tue Mar 30 04:44:38 2010 +0000
@@ -2893,7 +2893,8 @@
 	     ;; 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 @@
 			     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 @@
 				       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 @@
 		   (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)
--- a/lisp/gnus/mm-decode.el	Tue Mar 30 04:12:11 2010 +0000
+++ b/lisp/gnus/mm-decode.el	Tue Mar 30 04:44:38 2010 +0000
@@ -1258,11 +1258,11 @@
 	   (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 @@
 	(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