2011-07-20 8 views
4

文字の解釈方法:ウィンドウがメモ帳のウィンドウは、例えば、文字を解釈どのように私は思っていた

が、私は3バイトE3 81 81とバイナリエディタでファイルを集約しに。 これらのバイトは、UTF-8としてエンコードされた"ぁ"文字です。

私はメモ帳を開いて、それが"ぁ"

を表示する私はちょうどバイトを作成し、ファイルのエンコーディングを指定しないでください。 とメモ帳が正しく解釈します。

エンコードはおそらくどのエンコードが推測されていますか? またはこれらのバイトを特定のエンコーディングで保存するHexエディタです。

答えて

3

ファイルにこれらの3バイトしか含まれていない場合、使用するエンコードについての情報はまったくありません。

バイトは単なるバイトであり、エンコード情報を含める方法はありません。また、ヘキサエディタは、データをテキストとしてデコードすることを意図しているかどうかも分かりません。

メモ帳では通常ANSIエンコーディングが使用されるため、ファイルをUTF-8として読み取る場合は、ファイル内のデータに基づいてエンコーディングを推測する必要があります。

ファイルをUTF-8として保存すると、メモ帳でBOM(バイトオーダーマーク)EF BB BFがファイルの先頭に挿入されます。

+1

をうんしかし、私はUTF-としてファイルを保存didntは8か何か、iveはバイトを作成しました。ありがとうございます – nEAnnam

+0

@ Guffa、この答えは間違っています。彼はHxDでファイルを作成しました。このファイルはBOMのない** 3バイト**です。それでもメモ帳はASCIIテキストでは開きませんでしたが、それはUTF8テキストで行いますか?メモ帳はどのようにこれを知ったのですか? – Pacerier

2

メモ帳は、推測で推測します。詳細はわかりませんが、最初の数キロバイトを読み込んでUTF-8から変換しようとするのは非常に簡単なので、おそらくそれに似ています。

1

ファイルはUTF-8であるかどうかをチェックするための簡単かつ効率的な方法があります。 Wikipedia:http://en.wikipedia.org/w/index.php?title=UTF-8&oldid=581360767#Advantages、第4の箇条書きを参照してください。メモ帳はおそらくこれを使用します。

Wikipediaは、メモ帳では、文字列がUTF-16で書かれているかどうかをチェックするIsTextUnicode関数を使用していると主張しています(Windows Vistaでは「ブッシュ隠しファクト」バグを修正しました)。http://en.wikipedia.org/wiki/Bush_hid_the_facts

+0

ブッシュは事実がここで私と一緒に働くようには見えません...勝ちます8.1。しかし、質問者のコードは機能します。 – Pacerier

-2

どのようにファイルを特定するのがどのエンコーディングですか....?

ファイルに移動し、(AS保存)にしてみてください、あなたはdefaultlyファイルのエンコーディングを見ることができます。(これはエンコード形式とは、保存されている)

関連する問題