[mew-dist 19477] Re: text/html without charset specification

Hideyuki SHIRAI ( 白井秀行 ) shirai at example.com
2001年 10月 24日 (水) 18:06:38 JST


kazu> > Text/Html 以外は (2), (3), (4) というプライオリティになっていま
kazu> > す。また、Text/Xml にも mew-text/xml-detect-cs() 相当が必要だと
kazu> > 思われますが、ちょっとパス。^^;;;
kazu> 
kazu> どうも、
kazu> 
kazu> 	<?xml version='1.0' encoding='Shift_JIS' ?>
kazu> 
kazu> を探すだけのようですよ。

あら、これだけ?
" と ' の対応は無視しているけど、とりあえず、パッチ。

## 面倒くさいのは app/xml の方だったのか。

kazu> http://www.atmarkit.co.jp/fxml/rensai/xmlwomanabou06/learning-xml06.html

勉強しないといかんなぁ。

-- 
白井秀行 (mailto:shirai at example.com)
-------------- next part --------------
Index: mew-mime.el
===================================================================
RCS file: /cvsroot/shirai/mew/mew/mew-mime.el,v
retrieving revision 1.37
diff -c -u -r1.37 mew-mime.el
cvs server: conflicting specifications of output style
--- mew-mime.el	2001/10/24 04:02:28	1.37
+++ mew-mime.el	2001/10/24 09:05:00
@@ -259,7 +259,7 @@
 		  mew-prog-text/html-ext nil mew-prog-text/html-ext arg))
 	  (message "Displaying Text/Html...done")))))))
 
-(defun mew-text/html-detect-cs (beging end params)
+(defun mew-text/html-detect-cs (begin end params)
   (let ((cs (mew-charset-to-cs (mew-syntax-get-param params "charset")))
 	(case-fold-search t))
     (save-excursion
@@ -349,18 +349,31 @@
 	    (setq orig (cdr orig)))
 	  (unless esqp (setq arg (cons file arg)))
 	  (setq arg (nreverse arg))
-	  (setq wcs (mew-charset-to-cs (mew-syntax-get-param params "charset")))
-	  (unless wcs
-	    (setq wcs (if mew-decode-broken
-			  (mew-charset-to-cs (mew-charset-guess-region begin end))
-			;; this text is no decoded.
-			mew-cs-text-for-write)))
+	  (setq wcs (mew-text/xml-detect-cs begin end params))
 	  (mew-frwlet
 	   mew-cs-dummy wcs
 	   (write-region begin end file nil 'no-msg)
 	   (apply (function mew-start-process-disp)
 		  mew-prog-text/xml-ext nil mew-prog-text/xml-ext arg))
 	  (message "Displaying Text/Xml...done")))))))
+
+(defun mew-text/xml-detect-cs (begin end params)
+  (let ((cs (mew-charset-to-cs (mew-syntax-get-param params "charset")))
+	(case-fold-search t))
+    (save-excursion
+      (goto-char begin)
+      (cond
+       ((re-search-forward
+	 (concat "<\\?xml +version=['\"]1.0['\"] +"
+		 "encoding=['\"]\\([^'\"]+\\)['\"] *\\?>")
+	 nil t)
+	(mew-charset-to-cs (mew-match 1)))
+       (cs cs)
+       (t  ;; charset eq "us-ascii", cs is nil.
+	(if mew-decode-broken
+	    (mew-charset-to-cs (mew-charset-guess-region begin end))
+	  ;; this text is no decoded.
+	  mew-cs-text-for-write))))))
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;;


Mew-dist メーリングリストの案内