C++/CLI 中的 unicode 字符串文字

发布于 2024-10-04 03:25:43 字数 542 浏览 7 评论 0原文

假设我有一段代码,它返回带有西里尔字母的 unicode CLR 字符串。

    property String^ EIDErrorDescriptionSr { 
       String^ get() 
       {
        switch(EIDErrorCode) 
        {
         case EID_OK: return "Операција успешно завршена";
...

当我在引用此程序集的 C# 代码中读取属性时,我得到了一堆“?”。就好像 C++ 编译器将字符串“扁平化”为单字节字符。

我确实将 C++ 源文件保存为 UTF-8(甚至是 Unicode),并且对于每个非 ansi 字符,我总是从编译器处收到此警告:

警告 C4566:所表示的字符 通过通用字符名 '\u041E' 不能在当前的情况下表示 代码页(1252)

现在,是否有一个编译器开关可以强制编译器将文字视为 unicode?我好像找不到一个

Lets say I have this fragment of code which returns a unicode CLR string with Cyrillic letters

    property String^ EIDErrorDescriptionSr { 
       String^ get() 
       {
        switch(EIDErrorCode) 
        {
         case EID_OK: return "Операција успешно завршена";
...

When I read the property in C# code referencing this assembly, I get a bunch of the "?" as if the C++ compiler "flattened" the string to single-byte chars.

I did save the C++ source file as UTF-8 (even Unicode) and I always get this warning from the compiler for every non-ansi character:

warning C4566: character represented
by universal-character-name '\u041E'
cannot be represented in the current
code page (1252)

Now, is there a compiler switch to force compiler to treat literals as unicode? I can't seem to find one.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

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

发布评论

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

评论(1

春花秋月 2024-10-11 03:25:43

尝试使用 Unicode 字符串文字:L"..."

Try a Unicode string literal: L"...".

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