TextOut()和Shift-JIS(日文字符)

时间:2016-04-22 15:13:18

标签: c windows winapi visual-studio-2015 shift-jis

我有一个程序,我使用TextOut()在屏幕上打印普通的ASCII字符串。我现在想要添加打印出Shift-JIS编码字符串的功能。我可以告诉TextOut()我想要打印Shift-JIS字符串还是我必须完全使用其他功能? TextOut的文档似乎没有提到编码。

仅供参考:我的程序目前使用MS visual studio 2015进行编译,“字符集”设置为“使用多字节字符集”。

1 个答案:

答案 0 :(得分:1)

感谢andlabs,这里有完整的答案。当程序使用"字符集"编译时,这种方法有效。设置为"使用多字节字符集"。我不想用"字符集编译#34;设置为unicode,因为这会破坏过多的现有代码。

    char shift_jis_string[MAX_STR_LEN]; // null terminated

    // blah blah, setting shift_jis_string

    WCHAR unicode_string[MAX_STR_LEN];

    int n = MultiByteToWideChar(932,0,shift_jis_string,-1,unicode_string,MAX_STR_LEN);

    TextOutW(hdc,X,Y, unicode_string, n); // note the W on the end