[入门] 请教ascii api在d里的中文乱码问题如何解决
tuja
2007-05-01
D的源码一般是utf8,但windows api A结尾的,参数要求是ascii, 在D里直接把中文传递过去会乱码,如何把utf8转码成ascii,标准库里好像找不到可用的函数
|
|
qiezi
2007-05-01
D源文件里的字符串通常是utf8(char[])或者是unicode(wchar[]/dchar[]);如果从文件读取则是字节流,要先判断是什么编码。
phobos.std.utf里面只有utf8和unicode互转,这2种类型通常都称为unicode编码,它们和其它编码互转可以使用std.windows.charset里面的方法,从unicode转到mbcs要先转成utf8再调用,可能有点性能损失。直接utf8或utf16/utf32转到其它编码或是反向转换可以使用std.c.windows.windows里面的WideCharToMultiByte/MultiByteToWideChar。linux的编码转换没有纳入到phobos里面,你可以看一下wchar.h,或者使用iconv。 |
|
tuja
2007-05-01
非常感谢qiezi
节日快乐!! import std.windows.charset; import std.c.windows.windows; void main() { MessageBoxA(null, toMBSz(你好"), "Title", MB_OK); } |