bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#935: 23.0.60; gnus-mime-view-part-as-charset displays non-ASCII char


From: Katsumi Yamaoka
Subject: bug#935: 23.0.60; gnus-mime-view-part-as-charset displays non-ASCII characters as octals
Date: Tue, 09 Sep 2008 10:00:15 +0900
User-agent: Gnus/5.110011 (No Gnus v0.11) Emacs/23.0.60 (gnu/linux)

>>>>> Sven Joachim wrote:

> I have a problem with the gnus-mime-view-part-as-charset command that
> only shows up in Emacs 23, not sure whether this is a bug in Emacs or in
> Gnus.

> If an article has attachment with a wrongly specified charset, Gnus can
> work around that with the gnus-mime-view-part-as-charset command.  For
> instance, <news:20080908175652.GF4996@firemoth> on
> gmane.linux.debian.internationalization.german aka
> debian-l10n-german@lists.debian.org is such an article, it has an
> attachment that is incorrectly described as "Content-Type: text/x-diff;
> charset=utf-8" while it's actually encoded as iso-latin-1.  Now when I
> press C RET iso-latin-1, Emacs displays the German umlauts as octal
> sequences.  In Emacs 22.3, they are displayed correctly (Gnus version is
> the same, current No Gnus CVS).

That's exactly a bug.  Even in Emacs 22.3, it is not displayed
correctly if attachment contains CJK characters with wrong charset.
The patch is below.  I'll commit this after testing it further.

--- gnus-art.el~        2008-08-11 22:24:20 +0000
+++ gnus-art.el 2008-09-09 00:56:42 +0000
@@ -5138,8 +5138,9 @@
           (mm-string-to-multibyte contents)))
        (goto-char b)))))
 
-(defun gnus-mime-strip-charset-parameters (handle)
-  "Strip charset parameters from HANDLE."
+(defun gnus-mime-set-charset-parameters (handle)
+  "Set charset to parameters in HANDLE.
+The value of `gnus-newsgroup-charset' is used as a charset."
   (if (stringp (car handle))
       (mapc #'gnus-mime-strip-charset-parameters (cdr handle))
     (let* ((type (mm-handle-type (if (equal (mm-handle-media-type handle)
@@ -5150,8 +5151,10 @@
                                       (mm-handle-cache handle))
                                   handle)))
           (charset (assq 'charset (cdr type))))
-      (when charset
-       (delq charset type)))))
+      (if charset
+         (setcdr charset gnus-newsgroup-charset)
+       (setcdr type (cons (cons 'charset gnus-newsgroup-charset)
+                          (cdr type)))))))
 
 (defun gnus-mime-view-part-as-charset (&optional handle arg)
   "Insert the MIME part under point into the current buffer using the
@@ -5172,7 +5175,7 @@
                               (mm-read-coding-system "Charset: "))))
              (if (mm-handle-undisplayer handle)
                  (mm-remove-part handle)))
-       (gnus-mime-strip-charset-parameters handle)
+       (gnus-mime-set-charset-parameters handle)
        (when (and (consp (setq form (cdr-safe fun)))
                   (setq form (ignore-errors
                                (assq 'gnus-mime-display-alternative form)))

reply via email to

[Prev in Thread] Current Thread [Next in Thread]