「みんな教えて! 選手権!!」開催のお知らせ

文字化けはなぜ日本語が入っていることが多い?
WindowsやAndroid側の言語に限らず、なぜ文字化けには「ヲ」などの日本語が混ざっていることが多いのでしょうか?

A 回答 (3件)

選択されているフォント(グリフ)が日本語であることと、文字コードの符号化が不明なため文字化けを起こします



一般的に遭遇することはないですが、CPUのデータ取扱方法、bit endian/little endianの違いでも、データの扱いが全く異なってしまうので、文字化けを起こす可能性はあります

背景的な話をすると、コンピュータの世界は、元々は、英数字記号の世界で(7bitのデータ)、そこに、8bitデータとして、ラテン文字(ドイツ語、フランス語、イタリア語)など追加され利用されました

英語と、ラテン語のフォントは、共通で利用できたため、ドイツ語で書かれた文章を英語のフォントが使われているOSで開いても文字化けを起こすことはありません

ただ、日本語のJIS規格では、それらの文字コードは、半角カタカナにマップされており、日本語表示のために、特別な符号化方式を採用しなかったShift JISでは、ラテン文字コードはフォントファイルによって、半角カタカナのグリフにマップされるため、意味不明な文字列、つまり、文字化けを起こしているように見えてしまいます

それらの問題を解決するため、Unicodeという符号化方式と文字コードによって万国共通化を図ろうとしていますが、Unicodeでも、utf16やutf8と符号化方式も、分かれていたり、バージョンアップごとに文字種が増え、対応できなくなってしまい、結局、ShiftJISと同じような、方式、サロケードペアを使って、文字を拡張してるので、サロケードペアに対応していない場合には、同様に文字化けや表示できない問題などを引き起こしています

まだまだ、発展途上ということです

余談になりますが、このwebページは、<meta charset="utf-8">と符号化方式が書かれているため、「ヲ」、などを表示して文字化けすることはありませんが(グリフがなければ?に表示される可能性あり)、符号化方式が書かれていない、古いタイプのwebページや、テキストファイル等では、文字化けを起こすことはあります
    • good
    • 0

日本語とか中国語とかハングル語など2バイト文字といって2バイトのデータを使っています。


あ=3040
い=3041
といった感じですね

アルファベットや数値など半角で表示出来るものについては1バイトです。
A=41など

データの変換に失敗しているので文字化けしますので、殆どの場合は1バイトで復元されます。
これは2バイトと一致することは稀で、1バイトの方が圧倒的に一致しやすいからですね。

日本語の半角カタカナは実は1バイトで、数が多いのでこれに偶々一致することが多いというだけです。
    • good
    • 1

半角の数字やアルファベットは1バイトでコード化されています。


ですので化けることはありません。
でも、日本語は、複数バイトでコード化されていますし、コード体系も、Shift-JIS、JIS、EUC、UNICODEなど、いろいろと存在しています。
バイト数でいえば、コード体系によって差がありますが、漢字1文字が2~8バイトを使って表わされているのです。
なので、誤ったコード体系で復元したり、データの伝送エラー等で、違うコードになってしまうと、文字化けが発生することになります。

ちなみに、文字化けが発生しても、Windowsでは、プログラムの修正機能が強くて、一部のみの文字化けで、なんとか読める文章になるのに、Androidだと、全く読めない文章になってしまうなんてこともあります。
    • good
    • 2

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報

このQ&Aを見た人がよく見るQ&A