【发布时间】:2014-02-27 11:50:33
【问题描述】:
我正在尝试使 Java 应用程序和 VS C++ 应用程序使用套接字进行通信并相互发送不同的消息。到目前为止我唯一的问题 - 我完全迷失在他们的编码中。
默认情况下,Java 使用 UTF-8。就我而言,这是一个 Unicode 字符集。在我的 VS 项目中,我将设置设置为 Unicode。尽管出于某种原因,当我调试我的代码时,我总是在内存中看到我的字符串编码为 CP1252。
此外,如果我尝试在 Java 中使用 CP1252,它可以很好地处理英文字母,但每当我尝试一些俄文字母时,每个字母都会得到一个 3f 字节。
另一方面,如果我尝试在 Java 中使用 UTF-8 - 每个英文字母长 1 个字节,但每个俄语 - 2 个字节长。不是多字节编码吗?
一些关于 C++ 的文档说 std::string(char) 使用 UTF-8 代码页,而 std:wstring(wchar_t) - UTF-16。当我调试我的应用程序时,我看到它们都使用 CP1252 编码,尽管 wstring 在每个字母之间都有空字节。
您能否解释一下编码在 Java 和 C++ 中的行为方式以及我应该如何传达我的 2 个应用程序?
【问题讨论】:
-
对 Java 部分无能为力,但在 VC++ 中,尝试转到 Project->Properties->Configuration Properties->General->Character Set 并将值设为“Use Multi-Byte Character Set "
标签: java c++ unicode encoding utf-8