[1] Webブラウザーには、文字コードの指定のためのメニューがあるのが普通でした。
[2] これは文字コードを選択して再読込を実行するものです。
[11] 変更のためのメニューとしてはもちろん、 文書の文字符号化を利用者に提示するための欄としても機能していました。 は Webブラウザーの一般利用者も最低限の文字コードの知識が必要な時代でした。
[23] 現在では主要なWebブラウザーがこのメニューを廃止してしまいました。 そのため古くからある一部のWebページ (稀に近年作られたごく一部の Webページ) が文字コードを誤判定して文字化けして表示されても、 一般の利用者が修正することすらできなくなってしまいました。
[24] 明らかに Web非互換で有害な変更であるにも関わらず、 主要な Webブラウザー事業者らは廃止を強行し、 被害を無視しています。
[3] 実際の処理はどの仕様でも規定されていませんが、 HTML構文解析器における change the encoding による navigate に相当する操作 (当該ページ読み込みに使ったデータを使った読み込み、 またはそれができない場合同じ fetch 条件を使った読み込みを a known definite encoding 指定付きで実行) することが期待されていると思われます。
[10] 適用対象は文書だけであり、 XHR や JavaScript ファイルや CSS ファイルなどには適用されません。 (ただし明示されないとき既定値が文書の文字符号化になることで間接的に適用される場合はあります。)
[6] 文字コードを誤認識することによる脆弱性を発生させることを意図した攻撃を防ぐため、 UTF-7 など危険性の高い文字コードを候補に含めることは望ましくないと考えられています。 また近年では文字コードの誤認識を利用者が修正せざるを得ない状況は減ってきており、 Webブラウザー上の文字コード指定メニューの扱いも小さくなっています。
[8] 歴史的には大量の文字コードの選択肢を並べるのが一般的でした。
[7] 現在では、 Encoding Standard で規定されている文字符号化 (replacement を除く。) のみを候補に挙げるのが好ましいと考えられます。
[9] 他に「自動判定」や「自動判定 (日本語)」や「自動判定 (ロシア語)」 が必要かもしれません。
[14] Firefox の文字コード指定メニューなくなっちゃった? Firefox の Chrome に対する数少ない優れた点を削ってどうすんのよ。。。
[15] もみじばしさんはTwitterを使っています: 「つちぶた本舗の全駅訪問の旅が文字化けして困っています https://t.co/8jxWB9YJFm」 / Twitter, , https://twitter.com/momiji_3015/status/1567919885443026946
[16] ひめ@女体化したい人生だったさんはTwitterを使っています: 「ウチのサイトも見事に文字化けしてたとの報告をいただきました(気づいてなかった…) いい加減shift_jisなのも悪いのか。いま外出中なので対応できないけど、UTF-8にする方向で検討中です。」 / Twitter, , https://twitter.com/sarasvati635/status/1576429367999143937
[17] Internet Archive で90年代東アジアのウェブサイトがまともに表示できないところが多くて辛い。。。 当時からブラウザーの文字コードメニューで文字化けを治すのが普通の操作みたいになってたようなあれだから、 ブラウザーにメニューがなくなって自動判定も働かない (or 間違った文字コード指定がついてる) ともうお手上げなんだよなあ。
[18] 近年のWebプラットフォーム開発の人達はWeb互換性を忘れてしまったみたいで、 これじゃあ百年後に昔のウェブサイトは見れなくなるんじゃないかと思っていたけど、 もう既に20年前のウェブページがまともに見れなくなってしまったんだよなあ。
[19] Internet Archive にしかないサイトはまあ仕方がないとしても、 現役サイトでも長年放置されてるところが表示できなくなってるのは困りもの。
[21] ちょっと前までは Chrome で見れなくても Firefox なら文字コードメニューで表示できたのに。 Firefox はただでさえシェアが減ってるのに存在意義を自ら削ってるのやばいだろ。
[22] 他の事例は HTML documents misinterpreted by charset sniffer 参照。
[25] こういう非互換変更を強行した Webブラウザー事業者の主要開発者らはほとんど欧米人で、 もう文字化けは遠い昔の記憶になってしまっているんですよねえ。 アジアではまだたまに遭遇する身近な事象だというのに。 こういうのも一種の欧米中心主義なのでしょうか。
[26] まあそういう無意識的な偏見だけでなく、 古いものはとっとと捨ててしまえという IT業界の悪習から来てる所はありそうですよね。
[27] 古いページが残っていても新しいものはどんどん増えていき、 新しいものの方が参照されやすいという局所性と相まって、 古いページが見られる割合はどんどん下がっていく (が皆無になるわけではないし、希少性が上がるということは貴重になるということでもある) のに、 割合が低いから切り捨ててもいいという判断を Webブラウザー事業者が安易にしすぎるところがよろしくない。 近年の傾向だと特に Google の従業員はそういうところがあり、 Mozilla はそうでもないが何年かして結局最後に Google に追随する感がある。
[28] 文字コード変更メニューの場合あって困ることないんだから、 Firefox には残しておいた方が Firefox でないと正しく表示されないページがあります、って優位性のアピールに使えるのにねえ。 自分たちで必要な機能を削っておいて、 Firefox のシェアが減って困ってます、っていわれてもな。 自業自得やん。こっちはもっと困ってるんだよ。
charset=UTF-8
が一律で付与されているパターン。
HTML にはそれと矛盾している charset
が明記されているケースもあるし、
されていないケースもある。当時は HTTP charset
なしでも
meta
ないし自動判定でうまくいっていたか、
万一誤判定されても容易に文字コード変更メニューで修復できた。
今はどうにもならない。
著者は古い頁を頻繁に見に来ているわけではないから気づいていないのだろうし、
場合によっては著者が死亡していてサーバー上の頁だけが残存していることだってある。
しかし Webブラウザー事業者には人の心がないのでそんなものは
Web 上の割合のごくわずかだからと切り捨ててしまうのである。charset=UTF-8
は無指定とみなしてほしい。
勝手に機械的にデフォルトで設定するなら意味がないのだから。それが嫌なら文字コード変更メニューくらい実装しろよ糞ブラウザー[46] Cyrillic/Latin Converter, , https://web.archive.org/web/20010109085000/http://www.rz.uni-karlsruhe.de/~ut13/c2l.html
[47] >>46
文字コード指定がないため
Windows-1252 と誤認されてしまう。
Firefox でも修復メニューは有効にならない。
性質 (変換器なので変換表が入っている) 上、自動判定も原理的にほぼ不可能、
.de
ドメイン (ドイツ) なので Windows-1251 が優先判定されることもなく、
手動変更以外に方法がない。
[49] Open Society-Georgia Foundation (OSGF), , https://web.archive.org/web/19981202173516/http://www.osgf.ge/
[50] >>49 charset
情報なし。
Windows の Chrome では Windows-1252 と正常に判定される。
Windows の Firefox では ISO-8859-2 と誤認され文字化けする。
修復は有効にならない。なぜかソース表示では Windows-1252 と正常に判定される。
[51]
>>49 は(おそらく) ©
の1文字しか非ASCII文字がなく判定は誤りやすいだろうが、
©
だけ入っている頁は少なからずあるだろうし、 Chrome
ではたまたまかもしれないが正常判定できてるし、 Firefox
でも比較的単純な挙動の判定と思われるソース表示の方では正しく判定できているだけに、
誤判定してしまう Firefox 本体の落ち度と言わざるを得ない。
しかも修復メニューを用意しているのに仕組み上機能しないのだから、
利用者の体験は二重に悪い。
[52] — ŠG•¶ŽšŠÙ, , https://web.archive.org/web/20020606134958/http://w3.pos.to/kao/
[53] >>52 シフトJIS。Firefox は Windows-1252 と誤認。 文字コード修復メニューも無効。なおソース表示ではなぜかシフトJISと正常認識。 Chrome ではシフトJIS と正常認識。
[54] 房 地 产 中 文 版 Chinese Site By MagNett Communication, Business Presence and Real Estate; Vancouver BC, , https://web.archive.org/web/19961109234307/http://www.magnett.com/cindex.htm
[55] >>54 GB 2312。貼り付けられている画像はなぜか繁体字という怪しい中文ではあるが。
Firefox は ISO-8859-5 と誤認。ソース表示でも同じ。修復も不可。
Chrome は正しく GBK
と認識。
[56] Wayback Machine, https://web.archive.org/web/19970131150747/http://ermis.cc.duth.gr/gr/
[57] >>56 Chrome は Windows-1253 と判定し、おおむね正しそうだが一部文字化けするので少し違うのかも。 Firefox は Windows-1252 と判定する。ソース表示でも同じ。修復不可。
[58] Dam master, , http://dammaster.fc2web.com/tokyo/0693.html
[59] >>58 charset 情報なし。 Chrome では正しく Shift_JIS と判定される。 Firefox は Windows-1252 と誤認して文字化け。ソース表示も同じ。修復不可。
[61] Sample Bulgarian (UTF8) URLs, , http://www.i-dns.net/samples/bulgarian.html
[62] >>61 HTTP UTF-8、 HTML Windows-1251。正しくは Windows-1251。 Firefox でも Chrome でも UTF-8 として文字化け。 Firefox では修復できるが、なぜか Windows-1255 と誤判定する。 メニューがないので正しい符号化で見る方法がない。
[63] >>62 より、 Firefox の「修復」は meta
を見ないことがわかる。
[64] Sample Hebrew (CP1255) URLs, , http://www.i-dns.net/samples/hebrew.html
[65] >>64 も >>61 と同じ状況で、こちらは Windows-1255 が正しい。 Firefox の「修復」はこちらは正しく Windows-1255 と判定できた。しかし通常表示では「修復」できるが、 ソース表示では「修復」できないので UTF-8 と誤認したままで変更できない。片手落ち。
[66] LV Homepage (in Japanese), , https://web.archive.org/web/20010119052900/http://www.mt.cs.keio.ac.jp/person/narita/lv/index_ja.html
[67] >>66 HTTP にも HTML にも charset
なし。実際には ISO-2022-JP。
ESC
が入っているので明らかに ISO-2022-JP と容易に判定できる。
Chrome では正しく表示される。なぜか Firefox では Windows-1252
扱いされる。修復も不可。
[70] Wayback Machine, https://web.archive.org/web/20010404010313/http://www.megamedia.ne.jp/~nakagawa/
[71] >>70 フレームは ASCII文字のみ、フレーム内はシフトJISが正しい。 Chrome はフレームを Windows-1252 とみなし、フレーム内は Shift_JIS とみなす (正しい)。
[72] >>70 Firefox はフレームを Windows-1252 とみなし、フレーム内も Windows-1252 とみなす (文字化け)。 子フレームの文字コード無指定時は親フレームを継承するという挙動だろうか。 なお Firefox でフレーム内文書だけを単独表示すると、正しく Shift_JIS と判定する。 また、 フレーム表示時でも修復が利用可能で、実行するとフレームは UTF-8 となり、フレーム内は Shift_JIS となって文字化けが解消する。 解決したのはいいことだが腑に落ちない動作。
[73] Jawi Unicode Chart, AOYAMA Toru, https://dept.sophia.ac.jp/is/SIAS/past/MMES/past/jawi-study/unicode_chart.html
[74] >>73 HTTP UTF-8
, meta
Shift_JIS
,
実際シフトJIS。Firefox では「修復」可能。
[75] Thoughts, , http://plaza.harmonix.ne.jp/~onizuka/Thought.html
[76] >>75 HTTP Content-Type
text/html
(charset
なし)。
HTML <meta charset>
なし。実際 ISO-2022-JP。
Firefox は正しい。 Chrome だと Shift_JIS と誤認される。
[12] 参照処理モデル確立以前の Webブラウザーはシステムの文字コードで表示するのが基本で、 優れた実装はそれ以外にも沢山の文字コードを変換して表示できるという世界でした。
[13] それすら不完全で、例えば日本語の Windows 版 Netscape Navigator の文字コード指定メニューには世界各地のいろいろな文字コードが示されてはいましたが、 ISO 8859-1 を選んでもシフトJISでビット組合せが同じ半角カナが表示されるという有様でした。
[897] 943252 – Move nsCharsetMenu and charsetTitles.properties to comm-central ( ( 版)) https://bugzilla.mozilla.org/show_bug.cgi?id=943252
[29] Yoji Kubota, http://www.scc.kyushu-u.ac.jp/BioChemPhys/kubota/memo/index.php?page=16
[30] >>29 ヘッダーに UTF-8
、HTML に Shift_JIS
とある。実際はシフトJIS。
[31] �R�{���P���̌��J���i�Ƃ́@�_���@����, , https://www.jp-spiritual.com/iroha2.htm
[32] >>31 ヘッダーに UTF-8
、HTML に shift_jis
とある。実際はシフトJIS。
[33] ���q�O��̃z�[���y�[�W, https://www.r.minpaku.ac.jp/nakahiro/japanese/
[35] >>33 ヘッダーに UTF-8
、HTML に shift_jis
とある。実際はシフトJIS。
[34] Netscape 2.0b1/b2 BUG, , https://www.yama.info.waseda.ac.jp/~yamana/TEST/bug2.0.html
[36] >>35 ヘッダーに UTF-8
、実際は ISO-2022-JP。
[60] いつのまにか Chrome の文字コード選択メニューがなくなって、 文字化けしているページを正しく表示する方法がなくなってしまった。。。
[38] Character Encoding Menu in 2014, Henri Sivonen, , https://hsivonen.fi/encoding-menu/
[37] Text Encoding Menu in 2021, Henri Sivonen, , https://hsivonen.fi/encoding-menu-2021/
[39] The Text Encoding Submenu Is Gone, Henri Sivonen, , https://hsivonen.fi/no-encoding-menu/
[40] >>39 完全になくなったと思いきやかわりの機能が追加されてた。しかし隠されてて気づくはずがない。
If we removed the feature, we’d remove a reason for these users to stay with Firefox. Safari and Gnome Web still have more elaborate encoding override UI built in (the list of encodings in both is questionably curated but the lists satisfy the Japanese use cases), and there are extensions for Chrome.
これわかってるのに敢えて削除するんだからもう Firefox は顧客の需要を勘案する気がないってことだよね。そりゃあシェアが減る一方だよ。
[42] 計測したらあんまり使われていないし上手く使われていませんでした、って当たり前じゃんね。新しいサイトは問題ないんだから。 たまにしか遭遇しないんだから。 日常から使い慣れてるとしたらこの30年は何だったんだって話だよ。
[43] 【Google Chrome】文字化けで困った時は、テキストエンコーディングを使おう|かげさんの111から始まるHistory, https://kage3.cocolog-nifty.com/blog/2019/12/post-fb8610.html
[44] FreeBSD Ports ���쥯����� ����, , https://grumbeer.dyndns.org/ftp/cdroms/freebsd/freebsd-2.2.6-2/www/ja_JP.EUC/ports/master-index.html
[45]
>>4 Firefox で開くと UTF-8 扱いになって文字化けする。 HTTP の
Content-Type
が text/html; charset=utf-8
になっているのが原因。
そこで Firefox のメニューから修復を選ぶと、
一瞬日本語が表示された直後に別の形で文字化けする。
Windows-1252 と判定されている。
2回目の「修復」は選べない。
実際には HTML で
<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=EUC-JP">
と書かれており、 EUC-JP
が正しい。
Firefox の「修復」機能が正しく「修復」できない事例。