2014-10-31 82 views
0

在我的一個項目中,我需要在Windows C++中支持UTF-8。寬字符到多字節問題

當前代碼使用的是wcstombs,其中中文語言沒有正確轉換。我用WideCharToMultiByte替換wcstombs。經過測試,在Windows 7和Windows XP SP3中,我可以正常工作。

但是在舊機器之一中安裝了Windows XP SP3中的中文或CZech語言包。我瞭解這也會影響註冊表。那裏的應用程序行爲有所不同。

當我用wcstombs做opertator重載的時候<<它的工作正常。當我使用WideCharToMultiByte時,它的效果與預期不符。

沒有更改註冊表設置(安裝語言包),WideCharToMultiByte工作正常。

我正確地認爲語言包安裝會影響註冊表更改,從而影響此行爲嗎?請幫助我瞭解是否還有其他可能會影響行爲的事情。

+0

你確定WideCharToMultiByte沒有返回一個字節數組嗎?如果是這種情況,那麼它可能以某種方式與二進制移位運算符混淆(也是'<<') – MiltoxBeyond 2014-10-31 07:08:35

回答

0

默認情況下,WideCharToMultiByte將接受一個字符指針並返回convered多字節數組。

此外,他還提到,除了XP之外的所有操作系統,其中語言註冊表已更改。所以我不認爲這個問題是因爲二進制shif操作符。