将中文指定为 DBCS

发布于 2024-12-04 16:11:44 字数 414 浏览 1 评论 0原文

在我的代码中我可以这样做:

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

那支青花 2024-12-11 16:11:44

是的,你确实需要这样做。 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.)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文