2012-05-01 144 views
-1

我想用十六進制編輯器創建一個UTF-8/no-BOM文件。我期望的UTF字符是TUGRIK SIGN,它是UTF-8中的e2 82 ae十六進制編輯UTF-8文件

我用N ++創建了一個UTF-8 /沒有BOM文件,複製N ++中的字符並保存該文件。 Voilà,在HEX編輯器中看起來不錯,看起來很漂亮e2 82 ae

所以我嘗試了另一種方法,使用wxHexEdtior將3個字節e2 82 ae保存到一個文件中。廢話,N ++認爲由於某種原因該文件是ANSI(Latin1)編碼。

我不明白。 可能與Windows -CP1252編碼有衝突嗎?

另一個有趣的事情(我也根本沒有得到),是wxHexEditor顯示文件的一些反彙編。

針對wxHexEditor的N ++創建文件的反彙編可以,但wxHexEditor創建的文件具有無效的反彙編。

如果有人能向我解釋那個黑魔法,我會很高興。

Image 1

Image 2

+0

另一個十六進制編輯器-NEXT-軟十六進制編輯器似乎工作。 NP ++將文檔正確識別爲UTF-8不帶BOM。 http://12monkeys.dyndns.org/media/2012-05-01_file_by_hexeditor2.jpg – pi31415

+0

打開文件時,N ++沒有辦法猜測編碼,所以它打開ANSI(latin1)。你可以告訴他什麼是編碼,然後它會正確解釋這個字符。 – CharlesB

+0

NP ++顯然可以做到這一點。剛剛用Hex-Editor創建了一個新文件,NP ++選擇了UTF-8 wo BOM。那麼,時間睡覺:) – pi31415

回答

1

文件本身不包含編碼信息,所以你的編輯器有兩種猜測編碼或只是一些默認編碼顯示出來,並且Latin1的是一個共同的默認值。在我的N ++(6.1.2)版本中,它以UTF-8打開並正確顯示。

如果您的版本沒有正確猜測,那麼也許當您在N ++中創建文件時,您事先告訴N ++您將要創建一個沒有BOM的UTF-8文件,這就是它知道如何顯示它當時正確。

關於彙編程序...首先,彙編程序不是「鏈接到」或「與某個文件關聯」的情況,而是您的hexeditor只是試圖反彙編您提供的任何文件。

彙編程序不同的原因是,在「好」文件中,碰巧選擇了第一個字節(或沒有),所以wxHexEditor反彙編整個文件。在「壞」版本中,您可能選擇了第二個字節,並且這個82 ae不會反彙編爲任何有效的代碼。

+0

感謝您的意見! – pi31415