假设我有这段代码返回带有西里尔字母的unicode CLR字符串
property String^ EIDErrorDescriptionSr {
String^ get()
{
switch(EIDErrorCode)
{
case EID_OK: return "Операција успешно завршена";
...
当我在引用此程序集的C#代码中读取属性时,我得到了一堆“?”好像C ++编译器将字符串“扁平化”为单字节字符。
我确实将C ++源文件保存为UTF-8(甚至是Unicode),我总是从编译器那里得到每个非ansi字符的警告:
警告C4566:代表的字符 通过通用字符名'\ u041E' 不能代表当前 代码页(1252)
现在,是否有编译器开关强制编译器将文字视为unicode?我好像找不到一个。
答案 0 :(得分:3)
尝试使用Unicode字符串文字:L"..."
。