2

在我的服务器应用程序中,我试图用希腊语中的 UTF-8 解析我的响应,但由于我的本地字符集是 1254,因此我无法访问每个希腊字符。

我尝试将我的线程本地设置为 1253,但它不起作用。我想知道是否有一种方法可以在我的 1254 字符集机器中将 UTF-8 字符串转换为 windows.1253(Greek),仅用于某些客户端响应。

顺便说一句,当我将区域设置更改为希腊语时,我没有任何问题,但我无法遵循此解决方案,因为我的本地设置应保留为 windows。

根据评论更新:

这是我在 UTF-8 中得到的响应

"Valuation_Date":"10\/10\/2019 12:00:00 πμ"

这就是我的应用程序获取它的方式

"Valuation_Date":"10\/10\/2019 12:00:00 πμ"

此字符串在其 Unicode wstring 之后通过的代码

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(土耳其语)

<ValuationDate>10/10/2019 12:00:00 ğì</ValuationDate>

当然,这只是真正大响应的一小部分。

实际上,我想要的是将 UTF-8 字符串转换为 windows 1253(希腊语),并在对其进行处理后再次转换 UTF-8 字符串,我当前的默认本地是 1254(土耳其语)。

如果您需要更多信息,我很乐意分享更多信息。

4

0 回答 0