C++/CLI 中的 unicode 字符串文字
假设我有一段代码,它返回带有西里尔字母的 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
尝试使用 Unicode 字符串文字:
L"..."
。Try a Unicode string literal:
L"..."
.