gpt4 book ai didi

java - C++ 和 Java 编码

转载 作者:太空狗 更新时间:2023-10-29 21:43:56 26 4
gpt4 key购买 nike

我正在尝试让 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 个应用程序?

最佳答案

UTF-8每个字符的长度可变。普通字符通过每个字符使用更少的字节来占用更少的空间。更多不常见的字符占用更多空间,因为它们必须以更多字节进行编码。由于其中大部分是在美国发明的,猜猜哪些字符更短,哪些字符更长?

如果你想让套接字工作,那么你必须让双方就编码达成一致。否则,你就是在打一场败仗。

关于java - C++ 和 Java 编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21536750/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com