仕事で、Shift-JISやその他のエンコーディングの日本語テキストファイルをたくさん見つけました。すべてのコンピュータユーザーに mojibake (判読できない文字)の問題を引き起こします。 Unicodeは、すべての言語に対して単一の文字セットを定義することでこの種の問題を解決することを目的としており、インターネットでの使用にはUTF-8シリアル化が推奨されています。それでは、なぜ誰もが日本語固有のエンコーディングからUTF-8に切り替えないのですか? UTF-8のどのような問題または不利な点が人々を妨げていますか?
編集:W3Cはいくつかの nicodeの既知の問題 をリストしていますが、これも理由でしょうか?
一言で言えば、レガシー。
Unicodeが利用可能/普及する前に、Shift-JISやその他のエンコーディングが使用されていました。企業はShift-JISのみをサポートするインフラストラクチャに投資しています。そのインフラストラクチャがUnicodeをサポートするようになったとしても、it-works-so-don't-touch-it以上encoding-what? to migrating-all-existing-documents-is-too-costlyに。
同じ理由で、まだASCIIまたはlatin-1を使用している西側の会社はたくさんあります。問題を引き起こしたことはないので、誰も気づかないだけです。
私が覚えている理由は、UTF-8または別のUnicode表現を、主に日本で開発されているスクリプト言語Rubyのデフォルトの文字エンコーディングにしないことでした。
どうやら、この推論は、ラテン系のアルファベットがギリシャ語のアルファベットから発展したため、ギリシャ語のアルファの単一のコードポイントがあれば十分であると英語の読者に主張するのと同じくらい、日本のユーザーによってばかげていると認識されています。 α」とラテン語「a」、使用するフォントで見た目を決めましょう。 ( "β" = "b"、 "γ" = "g"などにも同じ)
(もしそうなら、ここでstackexchangeにギリシャ文字を含めることができないことに注意してください。)
私がもう覚えていないより多くの理由が与えられたかもしれません。
deceze's answer はそれに対して非常に強力な真実の要素を持っていますが、Shift-JISやその他がまだ使用されている別の理由があります。 。 Shift-JISはIIRCであり、2バイト幅のエンコーディングですが、UTF-8はCJKなどのエンコーディングでは通常3バイト、場合によっては4バイトです。
主な理由の中で文字列サイズ/メモリ使用量を数えます。
UTF-8では、東アジア言語の文字に3バイト以上が必要になることがよくあります。平均して、UTF-16を使用する場合よりも 50%多いメモリ が必要です-後者は、ネイティブエンコーディングよりも効率が低くなっています。
他の主な理由は、だまし絵で指摘されているように、遺産です。
他の人が言ったように、レガシーとストレージサイズですが、もう1つあります。カタカナ文字です。
Shift-JISでカタカナ文字を表すのに1バイトしかかからないので、カタカナを含む日本語テキストは1文字あたり2バイト未満(50/50の組み合わせでは1.5)で、Shift-JISはUTF-16(2バイト/ char)、UTF-8(3バイト/ char)よりもはるかに効率的です。
安いストレージはこれをはるかに小さな問題にしたはずですが、明らかにそうではありません。