2009-04-23 16 views
2

應用我與EVC++ 4個運行在Windows CE 5顯影,應支持Unicode(AFAIK wchar_t的使用UTF-16的窗口上,所以我使用的),所以我希望能夠用「更具異國情調」的角色進行測試。特別是在UTF-16使用4個字節,而不僅僅是2。因此我想在一個文本編輯(我使用Windows XP臺式機在ATM上,而不是在嵌入式設備上)顯示這些字符的字符。顯示上述U + FFFF Unicode字符在Windows

但我沒有設法它這樣做呢。作爲一個例子,我選擇了this character。 就像提到here「MPH 2B Damase」應該支持這個角色。所以我下載了字體並將其放入Windows \ Fonts中。我創建了使用16進制軟件(只是要確定)與以下內容的文本文件:

FFFE D802 DC00

當我用記事本打開它(?這應該是Unicode的,正確的),並使用下載的字體是不顯示1個字符,如預期,但這2:

˘Ü

我在做什麼錯? :)

謝謝!

hrniels

編輯: 翻轉BOM,作爲建議,不能正常工作。記事本(以及我嘗試過的所有其他編輯器)在這種情況下顯示兩個正方形。有趣的是,如果我在這裏複製兩個方塊(與Firefox)我看到正確的漢字:

 我也與科莫多編輯具有相同的結果試了一下。 

使用UTF-8沒有幫助記事本無論是。

回答

1

你的文本編輯器可能不喜歡UTF-16。它可能假定爲ANSI或UTF-8。

嘗試鍵入在UTF-8等效代碼:

0xF0 0x90 0xA0 0x80 

這不會幫助你的測試,但將確保您的字體是沒有過錯的。支持UTF-16的文本編輯器是Komodo Edit

+1

0xFFFE是字節順序標記,其指示使用UTF-16(小端)的。記事本應該能夠檢測到這一點。 – 2009-04-23 15:49:19

+0

我很清楚這一點。但他沒有說他是否使用記事本。有許多文本編輯器不處理UTF-16。 – Skurmedel 2009-04-23 15:50:39

1

如果你把字節順序標記周圍的其他方式,會發生什麼?

FEFF D802 DC00

(在字節序列被解釋爲兩個字符U + 02D8 U + 00DC,所以希望翻轉BOM將導致字節的時刻,以在預期的順序來讀出)

1

也許你忘了閱讀_wfopen()文檔。他們在那裏指定編碼參數。順便說一句,我認爲你已經在使用Unicode(wchars)。

我會建議你使用的文件UTF-8有或沒有BOM,但迫使你的的fopen使用UTF-8的標誌。看起來_wfopen("newfile.txt", "r, ccs=UTF-8");可以使用帶有或不帶BOM的UTF-8以及UTF-16。不要使用ccs=Unicode的錯誤,那就是有UTF-8文件沒有BOM常見的事。

你真的應該努力工作前閱讀有關Unicode一點點。這是一個非常好的投資 - 如果你瞭解Unicode的工作方式,它會節省你的時間。

這裏是一個開始http://blog.i18n.ro/newbie-guide-to-unicode/,不要忘了閱讀從文章的末尾的鏈接。

如果你真的需要一個簡單的文本編輯器,允許你使用Unicode編碼玩,用Notepad++和忘記記事本。