質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
UTF-8

UTF-8は8ビット符号単位の文字符号化形式及び文字符号化スキームです。データ交換方式、ファイル形式としては、一般的にUTF-8が使われる傾向があります。

Q&A

解決済

1回答

1093閲覧

文字化けはなぜ起こるのか

moscow3

総合スコア201

UTF-8

UTF-8は8ビット符号単位の文字符号化形式及び文字符号化スキームです。データ交換方式、ファイル形式としては、一般的にUTF-8が使われる傾向があります。

0グッド

0クリップ

投稿2017/12/18 18:04

抽象的な質問ですみません。 文字化け とはなぜ起こるのでしょうか?
文字コード(UTF-8など)の違いによって起きたりする と言うのはわかるのですが、
数字とかアルファベットになるならまだしも、なぜ「譁�ュ怜喧縺�」みたいな漢字になるのでしょうか?
例えば、「縺」はもつれる という意味ですが、文字化けと何か関係があるのでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

利用している環境によって「どのような文字セット」を扱おうとしているかが決まります。

この場合の文字セットとは以下の意味合いを含みます。

(1) 扱おうとしている文字の種類
(2) バイトの列と(1)の間の写像

(1)は例えば「英字・数字・記号・漢字」といった文字の種類です。
(2)は0x30<->'0', ..., 0x41<->'A', 0xE7 0xB8 0xBA<->'縺', ...などといったバイト列と特定の文字の対応関係の定義です。(2)のことを文字エンコーディングといったりもしますね。

さて文字化けとは「バイト列と文字の間の写像(変換)」をする際に(2)が本来意図したものと違うために誤った写像が行われることです。文字=>バイト列への変換、バイト列=>文字への変換のどちらも有りえます。

バイト列=>文字への変換での文字化けを想定しますと・・・

例えば利用環境で想定している文字セットが「ASCII」の場合「あり得る文字、つまり上記の(1)は、英数字・一部の記号」のみですので文字化けが起こった場合、結果もまた英数字や一部の記号のみになります。

一方「UTF-8などのUNICODE」あるいは「ShiftJIS」のように「漢字を含む文字セット」を想定した環境では(1)の中に漢字が含まれています。そのため文字化けにより誤って解釈された結果が「漢字」になる可能性もあるわけです。

ということで結論は「文字化けの結果が漢字になることがある」理由は「想定環境の文字セットに漢字が含まれているから」です。

投稿2017/12/18 20:29

KSwordOfHaste

総合スコア18394

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問