34 |
|
|
35 |
(defconst po-content-type-charset-alist |
(defconst po-content-type-charset-alist |
36 |
'(; Note: Emacs 21 doesn't support all encodings, thus the missing entries. |
'(; Note: Emacs 21 doesn't support all encodings, thus the missing entries. |
37 |
(ASCII . undecided) |
("ASCII" . undecided) |
38 |
(ANSI_X3.4-1968 . undecided) |
("ANSI_X3.4-1968" . undecided) |
39 |
(US-ASCII . undecided) |
("US-ASCII" . undecided) |
40 |
(ISO-8859-1 . iso-8859-1) |
("ISO-8859-1" . iso-8859-1) |
41 |
(ISO_8859-1 . iso-8859-1) |
("ISO_8859-1" . iso-8859-1) |
42 |
(ISO-8859-2 . iso-8859-2) |
("ISO-8859-2" . iso-8859-2) |
43 |
(ISO_8859-2 . iso-8859-2) |
("ISO_8859-2" . iso-8859-2) |
44 |
(ISO-8859-3 . iso-8859-3) |
("ISO-8859-3" . iso-8859-3) |
45 |
(ISO_8859-3 . iso-8859-3) |
("ISO_8859-3" . iso-8859-3) |
46 |
(ISO-8859-4 . iso-8859-4) |
("ISO-8859-4" . iso-8859-4) |
47 |
(ISO_8859-4 . iso-8859-4) |
("ISO_8859-4" . iso-8859-4) |
48 |
(ISO-8859-5 . iso-8859-5) |
("ISO-8859-5" . iso-8859-5) |
49 |
(ISO_8859-5 . iso-8859-5) |
("ISO_8859-5" . iso-8859-5) |
50 |
;(ISO-8859-6 . ??) |
;("ISO-8859-6" . ??) |
51 |
;(ISO_8859-6 . ??) |
;("ISO_8859-6" . ??) |
52 |
(ISO-8859-7 . iso-8859-7) |
("ISO-8859-7" . iso-8859-7) |
53 |
(ISO_8859-7 . iso-8859-7) |
("ISO_8859-7" . iso-8859-7) |
54 |
(ISO-8859-8 . iso-8859-8) |
("ISO-8859-8" . iso-8859-8) |
55 |
(ISO_8859-8 . iso-8859-8) |
("ISO_8859-8" . iso-8859-8) |
56 |
(ISO-8859-9 . iso-8859-9) |
("ISO-8859-9" . iso-8859-9) |
57 |
(ISO_8859-9 . iso-8859-9) |
("ISO_8859-9" . iso-8859-9) |
58 |
;(ISO-8859-13 . ??) |
;("ISO-8859-13" . ??) |
59 |
;(ISO_8859-13 . ??) |
;("ISO_8859-13" . ??) |
60 |
(ISO-8859-15 . iso-8859-15) ; requires Emacs 21 |
("ISO-8859-15" . iso-8859-15) ; requires Emacs 21 |
61 |
(ISO_8859-15 . iso-8859-15) ; requires Emacs 21 |
("ISO_8859-15" . iso-8859-15) ; requires Emacs 21 |
62 |
(KOI8-R . koi8-r) |
("KOI8-R" . koi8-r) |
63 |
;(KOI8-U . ??) |
;("KOI8-U" . ??) |
64 |
(CP437 . cp437) ; requires Emacs 20 |
("CP437" . cp437) ; requires Emacs 20 |
65 |
(CP775 . cp775) ; requires Emacs 20 |
("CP775" . cp775) ; requires Emacs 20 |
66 |
(CP850 . cp850) ; requires Emacs 20 |
("CP850" . cp850) ; requires Emacs 20 |
67 |
(CP852 . cp852) ; requires Emacs 20 |
("CP852" . cp852) ; requires Emacs 20 |
68 |
(CP855 . cp855) ; requires Emacs 20 |
("CP855" . cp855) ; requires Emacs 20 |
69 |
;(CP856 . ??) |
;("CP856" . ??) |
70 |
(CP857 . cp857) ; requires Emacs 20 |
("CP857" . cp857) ; requires Emacs 20 |
71 |
(CP861 . cp861) ; requires Emacs 20 |
("CP861" . cp861) ; requires Emacs 20 |
72 |
(CP862 . cp862) ; requires Emacs 20 |
("CP862" . cp862) ; requires Emacs 20 |
73 |
(CP864 . cp864) ; requires Emacs 20 |
("CP864" . cp864) ; requires Emacs 20 |
74 |
(CP865 . cp865) ; requires Emacs 20 |
("CP865" . cp865) ; requires Emacs 20 |
75 |
(CP866 . cp866) ; requires Emacs 21 |
("CP866" . cp866) ; requires Emacs 21 |
76 |
(CP869 . cp869) ; requires Emacs 20 |
("CP869" . cp869) ; requires Emacs 20 |
77 |
;(CP874 . ??) |
;("CP874" . ??) |
78 |
;(CP922 . ??) |
;("CP922" . ??) |
79 |
;(CP932 . ??) |
;("CP932" . ??) |
80 |
;(CP943 . ??) |
;("CP943" . ??) |
81 |
;(CP949 . ??) |
;("CP949" . ??) |
82 |
;(CP950 . ??) |
;("CP950" . ??) |
83 |
;(CP1046 . ??) |
;("CP1046" . ??) |
84 |
;(CP1124 . ??) |
;("CP1124" . ??) |
85 |
;(CP1129 . ??) |
;("CP1129" . ??) |
86 |
(CP1250 . cp1250) ; requires Emacs 20 |
("CP1250" . cp1250) ; requires Emacs 20 |
87 |
(CP1251 . cp1251) ; requires Emacs 20 |
("CP1251" . cp1251) ; requires Emacs 20 |
88 |
(CP1252 . iso-8859-1) ; approximation |
("CP1252" . iso-8859-1) ; approximation |
89 |
(CP1253 . cp1253) ; requires Emacs 20 |
("CP1253" . cp1253) ; requires Emacs 20 |
90 |
(CP1254 . iso-8859-9) ; approximation |
("CP1254" . iso-8859-9) ; approximation |
91 |
(CP1255 . iso-8859-8) ; approximation |
("CP1255" . iso-8859-8) ; approximation |
92 |
;(CP1256 . ??) |
;("CP1256" . ??) |
93 |
(CP1257 . cp1257) ; requires Emacs 20 |
("CP1257" . cp1257) ; requires Emacs 20 |
94 |
(GB2312 . cn-gb-2312) ; also named 'gb2312' in XEmacs 21 or Emacs 21 |
("GB2312" . cn-gb-2312) ; also named 'gb2312' in XEmacs 21 or Emacs 21 |
95 |
; also named 'euc-cn' in Emacs 20 or Emacs 21 |
; also named 'euc-cn' in Emacs 20 or Emacs 21 |
96 |
(EUC-JP . euc-jp) |
("EUC-JP" . euc-jp) |
97 |
(EUC-KR . euc-kr) |
("EUC-KR" . euc-kr) |
98 |
;(EUC-TW . ??) |
;("EUC-TW" . ??) |
99 |
(BIG5 . big5) |
("BIG5" . big5) |
100 |
;(BIG5-HKSCS . ??) |
;("BIG5-HKSCS" . ??) |
101 |
;(GBK . ??) |
;("GBK" . ??) |
102 |
;(GB18030 . ??) |
;("GB18030" . ??) |
103 |
(SHIFT_JIS . shift_jis) |
("SHIFT_JIS" . shift_jis) |
104 |
;(JOHAB . ??) |
;("JOHAB" . ??) |
105 |
(TIS-620 . tis-620) ; requires Emacs 20 or Emacs 21 |
("TIS-620" . tis-620) ; requires Emacs 20 or Emacs 21 |
106 |
(VISCII . viscii) ; requires Emacs 20 or Emacs 21 |
("VISCII" . viscii) ; requires Emacs 20 or Emacs 21 |
107 |
(UTF-8 . utf-8) ; requires Mule-UCS in Emacs 20, or Emacs 21 |
("UTF-8" . utf-8) ; requires Mule-UCS in Emacs 20, or Emacs 21 |
108 |
) |
) |
109 |
"How to convert a GNU libc/libiconv canonical charset name as seen in |
"How to convert a GNU libc/libiconv canonical charset name as seen in |
110 |
Content-Type into a Mule coding system.") |
Content-Type into a Mule coding system.") |
148 |
(with-temp-buffer |
(with-temp-buffer |
149 |
(let* ((coding-system-for-read 'no-conversion) |
(let* ((coding-system-for-read 'no-conversion) |
150 |
(charset (or (po-find-charset filename) "ascii")) |
(charset (or (po-find-charset filename) "ascii")) |
151 |
(charset-upper (intern (upcase charset))) |
(charset-upper (upcase charset)) |
152 |
(charset-lower (intern (downcase charset)))) |
(charset-lower (downcase charset)) |
153 |
(list (or (cdr (assq charset-upper po-content-type-charset-alist)) |
(candidate |
154 |
(if (memq charset-lower (coding-system-list)) |
(cdr (assoc charset-upper po-content-type-charset-alist))) |
155 |
charset-lower |
(try (or candidate (intern-soft charset-lower)))) |
156 |
'no-conversion))))))) |
(list (cond ((and try (coding-system-p try)) |
157 |
|
try) |
158 |
|
((and try |
159 |
|
(string-match "\\`cp[1-9][0-9][0-9]?\\'" |
160 |
|
(symbol-name try)) |
161 |
|
(assoc (substring (symbol-name try) 2) |
162 |
|
(cp-supported-codepages))) |
163 |
|
(codepage-setup (substring (symbol-name try) 2)) |
164 |
|
try) |
165 |
|
((and (string-match "\\`cp[1-9][0-9][0-9]?\\'" |
166 |
|
charset-lower) |
167 |
|
(assoc (substring charset-lower 2) |
168 |
|
(cp-supported-codepages))) |
169 |
|
(codepage-setup (substring charset-lower 2)) |
170 |
|
(intern charset-lower)) |
171 |
|
(t |
172 |
|
'no-conversion))))))) |
173 |
|
|
174 |
;;;###autoload |
;;;###autoload |
175 |
(defun po-find-file-coding-system (arg-list) |
(defun po-find-file-coding-system (arg-list) |