Tho*_*ini 2 c++ windows lua encoding utf
我正在开发一个用于学习目的的Windows游戏(我正在学习DirectX).我希望它有UTF支持.
阅读这个问题我了解到windows使用的wchar_t是UTF-16.我希望我的游戏能够获得Lua脚本支持,而Lua并不太喜欢Unicode.它只是将字符串视为"字节流"; 这对UTF-8来说效果不错,但UTF-16几乎不可能使用.
长话短说:windows想要UTF-16,lua想要UTF-8.
所以我想,我们只是使用UTF-8与正常char*和string!.length()会搞砸但是谁在乎呢?但它不起作用:
const char test_utf8[] = { 111, 108, 0xc3, 0xa9, 0 }; // UTF-8 for olè
mFont->DrawTextA(0, test_utf8, -1, &R, DT_NOCLIP, BLACK);
/* DrawText is a Direct3d function to, well, draw text.
* It's like MessageBox: it is a define to either DrawTextA
* or DrawTextW, depending if unicode is defined or not. Here
* we will use DrawTextA, since we are passing a normal char*. */
Run Code Online (Sandbox Code Playgroud)
这打印olé.换句话说,它似乎不使用UTF-8而是使用ISO-8859-1.
那么,我该怎么办?我能想到以下几点:
它也不使用8859-1,它使用您系统的本地代码页.您可以转换为UTF16并通过自己转换字符串来使用DrawText().如果您的类库没有任何支持,那么您可以使用MultiByteToWideChar().