C++ 在本地土耳其语(1254)计算机中使用希腊语代码页(1253)
在我的服务器应用程序中,我试图用希腊文的UTF-8解析我的响应,但由于我的本地字符集是1254,因此我无法访问每个希腊文字符 我尝试将我的线程设置为本地1253,但没有成功。我想知道是否有一种方法可以将我的1254字符集机器中的UTF-8字符串转换为windows.1253(希腊语),只用于某些客户端响应 顺便说一下,当我将我的区域设置更改为希腊语时,我没有任何问题,但我无法遵循此解决方案,因为我的本地设置应保持为windows 根据评论更新: 这是我在UTF-8中得到的响应C++ 在本地土耳其语(1254)计算机中使用希腊语代码页(1253),c++,codepages,character-set,C++,Codepages,Character Set,在我的服务器应用程序中,我试图用希腊文的UTF-8解析我的响应,但由于我的本地字符集是1254,因此我无法访问每个希腊文字符 我尝试将我的线程设置为本地1253,但没有成功。我想知道是否有一种方法可以将我的1254字符集机器中的UTF-8字符串转换为windows.1253(希腊语),只用于某些客户端响应 顺便说一下,当我将我的区域设置更改为希腊语时,我没有任何问题,但我无法遵循此解决方案,因为我的本地设置应保持为windows 根据评论更新: 这是我在UTF-8中得到的响应 "Valuatio
"Valuation_Date":"10\/10\/2019 12:00:00 πμ"
我的应用程序就是这样得到它的
"Valuation_Date":"10\/10\/2019 12:00:00 πμ"
此字符串在其Unicode字符串后通过的代码
std::string returnGivenCodePage(const std::wstring &unicodeString)
{
std::string result;
int numberOfBytesNeeded = WideCharToMultiByte(1253, WC_NO_BEST_FIT_CHARS,
unicodeString.c_str(), (int)unicodeString.length(),
NULL, 0, NULL, NULL);
int numberOfBytesWritten = WideCharToMultiByte(1253, WC_NO_BEST_FIT_CHARS,
unicodeString.c_str(), (int)unicodeString.length(),
&result[0], numberOfBytesNeeded, NULL, NULL);
return result;
}
最后,这是我将其更改为SystemWindowsAnsi后的版本,它是1253(希腊语言环境),但我的默认本地语言是1254(土耳其语)
2019年10月10日12:00:00ğ
当然,这只是巨大反应的一小部分
实际上,我想要的是将UTF-8字符串转换为Windows1253(希腊语),在再次转换UTF-8字符串后,我当前的默认本地值是1254(土耳其语)
如果您需要更多信息,我很乐意与您分享。Windows对字符串使用Unicode,因此您只需在读取非一致代码输入或写入非一致代码输出时指定代码页。如果在应用程序中使用Unicode字符串和类型(std::u16string和char16_t),则只需担心输入/输出期间的转换。编译器本身会抱怨如果你混合了单字节和多字节String和C++,UTF8没有特殊的类型,你必须使用<代码> STD::String 或
<ValuationDate>10/10/2019 12:00:00 ğì</ValuationDate>