将中文指定为 DBCS
在我的代码中我可以这样做:
wchar_t *s = L"...一些中文/日语/等字符串..";
这工作正常。 但如果我这样做:
char *s = "...some chinese/japanese/etc string..."
我最终会将 s 分配给“???????” (不是显示问题,数值中有实际问号)。
鉴于我使用的是 US/1252 Win 7 (VS2010) 和 Unicode 编译的应用程序,如何在给定常量字符串文字的情况下创建 MBCS 中文字符串?我不希望它是 unicode,而是汉字的 MBCS 表示形式。
到目前为止,我能够做到这一点的唯一方法是使用 unicode 版本并使用 WideCharToMultiByte 将其转换为 MBCS。我真的需要这样做,还是将其作为字节数组输入?
In my code I can do:
wchar_t *s = L"...some chinese/japanese/etc string..";
and this works okay.
but if I do:
char *s = "...some chinese/japanese/etc string..."
I end up with s assigned to "???????" (not a display problem, there are actual question marks in the value).
Given that I'm on a US/1252 Win 7 (VS2010) and Unicode-compiled apps, how do I create a MBCS chinese string given a constant string literal? I do not want it to be unicode, but rather the MBCS representation of the chinese characters.
So far the only way I've been able to do it is use the unicode version and convert it to MBCS using WideCharToMultiByte. Do I really need to do that, or enter it as a byte array?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
是的,你确实需要这样做。 C++ 中没有 MBCS 字符串文字。
(理论上你可以用正确的字节做类似 char *s = "...\xa7\f6\d5..." 的事情,
但这很难写和读。)
Yes, you really do need to do that. There are no MBCS string literals in C++.
(In theory you could do something like char *s = "...\xa7\f6\d5..." with the right bytes,
but that would be difficult to write and read.)