簡體   English   中英

Win1251-> UTF16轉換

[英]Win1251->UTF16 conversion

我有一個用Windows-1251編碼編寫的dll項目,我需要用UTF-16編碼的dll輸出。 我使用以下函數進行轉換:

ptr = MultiByteToWideChar(CP_ACP, 0, str, -1, wbuff.getBuffer(), len);

不幸的是,MultiByteToWideChar使用系統區域設置作為源編碼。 因此,例如,如果我的Windows語言環境是英語(美國),它會根據需要轉換Win1252-> UTF8,而不是Win1251-> UTF8。

我嘗試手動設置區域設置,但以下代碼也不起作用:

enc = setlocale(CL_ALL, "rus_rus.1251");
//this returns Windows-1251 encoding
ptr = MultiByteToWideChar(CP_ACP, 0, str, -1, wbuff.getBuffer(), len);

據我所知,MultiByteToWideChar總是使用系統區域設置,忽略我的setlocale調用。

還有其他方法可以進行此類轉換嗎? 或者我可能只是不理解這些區域設置? 謝謝。

PS我很抱歉語法錯誤。

setlocale是一個CRT函數。 顯然,Windows API並不關心通過它設置什么。

您應該設置所需的代碼頁(在您的情況下為1251)而不是CP_ACP (這意味着系統默認值)。

res = MultiByteToWideChar(1251, 0, str, -1, wbuff.getBuffer(), len);

如果您不被迫使用WinAPI,則可能需要使用ICU的字符轉換器

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM