2014-04-07 73 views
0

我想翻譯一個遊戲,這個遊戲從文本文件加載字符串。Windows編碼澄清

目標語言使用非ASCII字符,所以我天真地將我的文件保存在utf8中,但它不起作用,因爲帶有變音符號的字符未正確顯示。

研究在字符串文本文件名存儲在配置文件中的更好,我發現可以採用任何這些值的charset選項:

ANSI_CHARSET DEFAULT_CHARSET SYMBOL_CHARSET MAC_CHARSET SHIFTJIS_CHARSET HANGEUL_CHARSET JOHAB_CHARSET GB2312_CHARSET CHINESEBIG5_CHARSET GREEK_CHARSET TURKISH_CHARSET VIETNAMESE_CHARSET HEBREW_CHARSET ARABIC_CHARSET BALTIC_CHARSET RUSSIAN_CHARSET THAI_CHARSET EASTEUROPE_CHARSET OEM_CHARSET

據我所知,WinAPI中的相當標準的值和字符集和字符編碼是同義詞。

所以我的問題是,這個名稱和標準名稱如utf8或iso-8859-2之間是否存在對應關係?如果是這種情況是什麼?

回答

0

使用EASTEUROPE_CHARSET

ISO 8859-2嘗試大多是相當於。根據這篇MSDN文章,使用EASTEUROPE_CHARSET訪問1250代碼頁。

請注意,您將需要將文本文件保存在1250代碼頁中,因爲ISO 8859-2不完全等同。從Wikipedia

Windows-1250類似於ISO-8859-2,並具有所有可打印的字符,它具有和更多。然而,其中一些重新排列(與Windows-1252不同,它將ISO-8859-1中的所有可打印字符保留在同一位置)。大部分重新安排似乎已經完成,以保持與Windows-1252共享的字符與Windows-1252在同一位置,但移動的三個字符(Ą,Ľ,can)不能用這種方式解釋。

+0

windows-1250不編碼我需要的一些字符。我需要那些特價:èéàìîòùÈÉÀÌÌÒÙ。我嘗試使用該文本編寫一個utf8文件,並試圖將其轉換爲:--iconv -c -f utf-8 -t windows-1250 DICRITICS--結果是隻有é和î(和大寫字母)會被轉換。但是,如果您鏈​​接到的代碼頁表涉及到windows-X編碼,我可以試用它們。 –

+0

@ Paolo.Bolzoni這些可以在ANSI_CHARSET中找到,也就是Windows 1252,又名「Western」。 –

0

這些名稱是Windows代碼頁的符號標識符,它是由Microsoft定義或採用的字符編碼(=字符集)。其中很多是registered at IANA,前綴爲windows-。例如,EASTEUROPE_CHARSET表示代碼頁1250,其已註冊爲windows-1250並且通常稱爲Windows拉丁語2.

UTF-8是不同的。您需要特殊的例程來讀取和寫入UTF-8編碼數據。當你想成爲真正的全球化(支持不同的語言和書寫系統)時,UTF-8或UTF-16通常是字符編碼唯一明智的選擇。對於單一特定語言,在某些情況下,某些代碼頁可能更實用。

+0

請記住,Microsoft確實有一個UTF-8編碼頁:65001.不過,UTF-8沒有相應的'XXX_CHARSET'。 「XXX_CHARSET」值對應於Ansi字符集。 –

0

您可以使用此MSDN頁面的備註部分下的表格獲取標準編碼名稱(由IANA註冊)。

只要找到字符集行並閱讀代碼頁號,標準名稱是windows- [代碼頁號]。