utf8字符串在变量中的转换无效

时间:2013-01-28 10:53:02

标签: windows string unicode d

这里的效果是消息文本在希腊字母中是正确的,但消息标题是全空框,有时其他文本有中文字符。

string msg= "ένα μήνυμα";
MessageBoxW(null, "ένα μήνυμα", cast(wchar*)msg.toStringz, MB_ICONERROR);

enter image description here

1 个答案:

答案 0 :(得分:4)

在将std.utf转换为string而非转换时,您需要使用toUTF16z(来自LPCWSTR):

MessageBoxW(null, "ένα μήνυμα", toUTF16z(msg), MB_ICONERROR);

您不需要对字符串文字做任何事情,因为编译器会通过查看MessageBoxW的参数类型自动创建UTF-16常量。