是什么决定了C++中的字符编码

What determines character encoding in C++

本文关键字:字符 编码 决定了 C++ 是什么      更新时间:2023-10-16

我是为Windows开发的,软件是客户端-服务器解决方案,客户端用C#编写,服务器用C++编写。

今天,我想开发一个简单的函数:从客户端发送字符串,在服务器端接收字符串,并将其写入xml文件。

我的问题是,我在服务器端看到的字符是ANSI编码的。据我所知,C#字符串是用unicode编码的,为什么我的服务器端C++应用程序将字符串编码为ANSI?我认为我的通信模块没有修改字符串。

嗯,C#字符串是UTF16编码的
您可能希望使用std::u16string而不是常规的std::string

另一种选择是使用System.Text.Encoding类。

由于IO操作比CPU操作慢得多,并且IO操作时间也与所涉及的内存大小成正比,并且UTF8通常比UTF16更精简,因此通常的做法是通过网络与UTF8进行通信。

因此,在实际发送C#字符串之前,我将把它们转换为UTF8,并在服务器端使用std::string

不过,请记住,std::string并没有UTF8意识,所以编写类似str[0]的东西可能不会提供完整的UTF8序列,而只是它的第一个字符。