2013-05-12 67 views
1

我正在使用Visual C++/Windows API完成應用程序,並且正在使用MySql C Connector。如何正確顯示來自不同語言的字符?

整個應用程序代碼使用ANSI,MySql C Connector也使用ANSI。

這項計劃將在波蘭和德國的計算機上使用與Windows XP/VISTA/7或8

我要正確地將展出德國變音符號和波蘭重音字符:

  • 對話框控制(串是從語言文件)
  • 產生的XHTML文件從MySQL數據庫中檢索
  • 弦上的控件中顯示和XHTML文檔加載

我聽說過的MultiByteToWideChar和Unicode函數(MessageBoxW等),但應用程序代碼也接近尾聲,將是大量的工作......

如何正確地作出字符編碼用最少的工作,時間?

也許更改非Unicode程序的系統代碼頁?

回答

2

首先,當然是:MySQL返回什麼代碼集?或者: 將數據寫入數據庫時​​使用了哪些代碼集?

除此之外,我不認爲你將能夠避免使用 無論是寬字符或多字節字符:單字節字符 ,德國將使用ISO 8859-1(代碼頁1252)或 ISO 8859-15,波蘭語ISO 8859-2(代碼頁1250)。但是你用你自己的代碼中的字符做什麼 ?您可能可以使用 避開UTF-8(代碼頁65001),但不做任何更改。 真正的問題是這些字符最初來自 (儘管可能不會太困難將它們立即轉換爲UTF-8在源代碼中);我不認爲Windows 尊重代碼頁的輸入。

雖然它不能幫助你多少知道的話,你處理 與一個幾乎不可能的問題,因爲這在很大程度上取決於你的程序之外 件事:搞什麼 顯示字體的編碼,或鍵盤驅動程序,例如。事實上, 程序在屏幕上顯示一件東西並不罕見,當輸出到打印機時 和其他東西不同,或者 在屏幕上顯示一件東西,但如果將 數據寫入文件,並與另一個程序一起閱讀。 情況正在改善—現代Unix和互聯網是 在UTF-8,無處不在 和無所不包,並且Windows通常使用UTF-16代替 所有純Windows(但需要支持UTF -8代表 互聯網)。但是,即使使用平臺標準也不會幫助 ,前提是人工客戶端已安裝(並正在使用)不包含所需字符的字體。

+0

當我寫入MySql並用我的程序檢索時,所有字符都是正確的。當我用phpMyAdmin編寫但用程序字符檢索不正確。但我不知道在德語Windows上是否也是正確的(我只打磨Windows)。在MySql中是utf8_bin。 – David 2013-05-12 18:15:16

+0

@David對於正確的定義是什麼?我認爲MySQL在很大程度上是內容中立的,至少對於varchar字段。所以所有的程序都會返回所寫的內容。但是寫入的內容實際上不是字符,而是代碼點---小整數值。問題是讀取的程序如何解釋這些值。如果你編寫UTF-8,並且讀取的程序將這些值解釋爲ISO 8859-1,那麼它將不起作用。這就是爲什麼我說這是一個幾乎不可能的問題 - 除非你對鏈中的所有元素都有絕對的控制。 – 2013-05-12 20:16:55

相關問題