使用unicode还是不使用unicode
to unicode or not to unicode
我从注册表中获得一个值。该值可能包含双字节字符。稍后,我将不得不通过网络 将其传输到c#客户端以显示。c#是全unicode的。如果非unicode调用该函数,则返回MBCS。
我应该用什么?
string result = string(cbData);
RegQueryValueExA(h_sub_key, "DisplayName", NULL, NULL, (LPBYTE) &result[0], &cbData)
或
string result = string(cbData);
RegQueryValueExW(h_sub_key, L"DisplayName", NULL, NULL, (LPBYTE) &result[0], &cbData)
尽可能使用Unicode将使您的工作更轻松。注册表本地包含Unicode,并在使用ReqQueryValueExA时动态转换为MBCS,为什么要进行不必要的转换呢?
将UTF-16转换为UTF-8可能对网络上的信息有意义,但如果您控制连接的两端,则没有必要。
不,不是这样的。从第一个代码片段返回的字符串根据当前系统代码页进行编码。可能是双字节编码。可能是任何东西。当然,大问题是,在互联网连接的另一端的c#代码没有办法猜出代码页可能是什么。
所以不要使用第一个代码片段。第二个获得utf16字符串,Windows中使用的本机编码,结果需要是std::wstring。还有c#使用的编码,所以你可以发送二进制字符串。虽然这通常不是一个好主意,但是xml很流行。您可以自行设置连线格式
相关文章:
- 使用 Visual Studio 2019 编译 Unicode
- C++ wmain 函数错误时使用 Unicode
- 如何在C++中使用 UTF-8 和 Unicode?C++20 char8_t有多大?
- 在 CHtmlEditCtrl::SetDocumentHTML 中使用 Unicode
- 在 Windows 中使用 boost::p rogram_options 从命令行参数读取 Unicode 字符
- 如何使用 CTypes 将 wchar_t** - 以空结尾的 UNICODE 字符串数组 - 返回到 Python 脚
- 如何使用C++在Windows中输出和输入UTF8或UTF16 Unicode文本?
- 在2018年使用C++处理Unicode的正确方法是什么?
- C++ 将 setmode 与 _O_U8TEXT 一起使用来处理 unicode 时崩溃
- 如何在 python 包装中使用 unicode 字符串用于带有 cython 的 c++ 类?
- 无法在 VS C++ 中使用 unicode,尽管选项启用了它
- 无法使用 Unicode 特殊字符设置窗口文本
- 如何使用poco :: logger记录Unicode字符串
- 使用C 17处理Unicode的有效,符合标准的机制是什么
- 使用 Imread 打开具有 Unicode 名称的图像文件
- 是否可以使用 cv::waitkey(0) 读取 unicode 值
- 使用库中的Unicode/Multibyte版本的混合
- C++基础知识(使用其他方法(Unicode?)的相同代码)
- 如何使用Xcode中的Unicode打印字符╔(和其他字符)
- 无法读取使用Unicode的文件(存在)