HTTP レスポンスヘッダの Content-Type に現れる charset
BeautifulSoup の文字コード判定が HTTP レスポンスヘッダを使っていないことに思い至って,50 万件くらいのウェブページから,HTTP レスポンスヘッダの Content-Type に指定されている charset(いわゆる文字コード)を抜き出してみました.
結果は以下の通りです.1 列目が頻度,2 列目が charset(小文字に統一),3 列目が IANA の Character Sets(http://www.iana.org/assignments/character-sets)に含まれているかどうか,4 列目が iconv -l(Ubuntu 同梱版)に含まれているかどうかを示しています.
Frequency | Charset | IANA | iconv |
---|---|---|---|
102076 | utf-8 | ok | ok |
52691 | euc-jp | ok | ok |
32933 | shift_jis | ok | ok |
7153 | windows-31j | ok | ok |
2302 | none | - | - |
1762 | iso-8859-1 | ok | ok |
1369 | shift-jis | - | ok |
970 | sjis | - | ok |
696 | utf8 | - | ok |
682 | cp943c | - | - |
641 | ms932 | - | ok |
637 | iso-2022-jp | ok | ok |
478 | x-euc-jp | - | - |
274 | gb2312 | ok | ok |
251 | gbk | ok | ok |
248 | euc_jp | - | - |
224 | big5 | ok | ok |
127 | x-sjis | - | - |
108 | "euc-jp" | - | - |
102 | jis | - | - |
97 | cswindows31j | ok | ok |
82 | euc | - | - |
75 | auto | - | - |
73 | "utf-8" | - | - |
72 | ※1 | - | - |
70 | euc-kr | - | ok |
70 | iso-8858-1 | - | - |
55 | nl | - | - |
46 | sjis-win | - | ok |
38 | ja | - | - |
38 | shuft_jis | - | - |
34 | (sjis) | - | - |
32 | 0 | - | - |
32 | eucjp-open | - | ok |
23 | "shift_jis" | - | - |
23 | ks_c_5601-1987 | - | - |
21 | us-ascii | ok | ok |
7 | auto-detect | - | - |
7 | x-ms950-hkscs | - | - |
5 | null | - | - |
4 | charset=utf-8 | - | - |
4 | iso8859-1 | - | ok |
4 | no | ok | ok |
4 | shift.jis | - | - |
4 | unknown | - | - |
3 | euc-jp ※2 | - | - |
3 | big-5 | - | ok |
3 | euc_kr | - | - |
3 | iso-2202-jp | - | - |
3 | iso8859_1 | - | - |
3 | ms949 | - | - |
3 | no value | - | - |
3 | pass | - | - |
3 | sjis_0208 | - | - |
3 | sjis_jp | - | - |
3 | x-euc | - | - |
3 | zh-cn | - | - |
2 | "" | - | - |
2 | 'shift_jis' | - | - |
2 | (off/euc-jp/shift_jis) | - | - |
2 | big5-hkscs | ok | ok |
2 | euc_-jp | - | - |
2 | eucjp-win | - | ok |
2 | gb18030 | ok | ok |
2 | ms950 | - | - |
2 | out_encode | - | - |
2 | s-jis | - | - |
2 | shfit_jis | - | - |
2 | shif_jis | - | - |
2 | shifjis | - | - |
2 | shift_sjis | - | - |
2 | sift_jis | - | - |
2 | tis-620 | ok | ok |
2 | utf-8n | - | - |
2 | windows-1251 | ok | ok |
2 | “shift-jis″※3 | - | - |
2 | “utf-8″※3 | - | - |
2 | “utf-8″※4 | - | - |
1 | -8 | - | - |
1 | _charset | - | - |
1 | charset=euc-jp | - | - |
1 | content_chars | - | - |
1 | cp932 | - | ok |
1 | ecu-jp | - | - |
1 | euc-jp, text/html | - | - |
1 | euc-jp,shift_jis,iso-2022-jp | - | - |
1 | eucjp | - | ok |
1 | gb-2312 | - | - |
1 | gbk,utf-8 | - | - |
1 | iso-20022-jp | - | - |
1 | iso-2022 | - | - |
1 | iso-8859 | - | - |
1 | koi8-r | ok | ok |
1 | off(shift-jis) | - | - |
1 | shft_jis | - | - |
1 | shif-jis | - | - |
1 | shift_jis,euc-jp,iso-2022-jp | - | - |
1 | shiftjis | - | - |
1 | shit-jis | - | - |
1 | ujis | - | ok |
1 | urf-8 | - | - |
1 | utr-8 | - | - |
1 | x-sjis-jp | - | - |
※ 1. 空文字列でした.
※ 2. "|euc-jp" でした.
※ 3. Shift_JIS の全角ダブルクォートでした.
※ 4. UTF-8 の全角ダブルクォートでした.
レスポンスヘッダに charset を含めていないページの方が多いようです.charset の指定があるページについては,案の定,UTF-8, EUC-JP, Shift_JIS が上位を占めています.Windows-31J(Shift_JIS の拡張版)が 4 位になっているのは少し意外でした.
そして,不可思議なのが 5 位に現れる none です.他にも,auto, nl, ja, 0, auto-detect, null, unknown, no value, pass などの怪しい charset や,複数の charset を並べたものが登場しますが,none の頻度は圧倒的です.
- 文字化け対策として広まったという経緯があるようです.
他には,不要な記号がついているもの,表記揺れ(`-' と `_'),typo が少しあるようです.設定を間違えても動くというのは,便利なのですが,悩ましい問題ですね.