微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用API​​ WideChartoMultibyte将日文字符从宽字符转换为多字节给出'????'

在我的MFC应用程序中,我正在读取string表中的日文字符,然后使用以下代码将其转换为多字节

WCHAR wBuf[1024]; int rc; rc = LoadStringW(hInstance,iResourceID,wBuf,1024); WideCharToMultiByte(1252,WC_COMPOSITECHECK,-1,buf,1024,NULL,NULL);

但是每一个日本人的angular色都被转换成了“????” 我试图将代码页从1252更改为1200,但没有帮助。

如何检查一个端口是否在Linux使用C是免费的

在C#中使用Socket改进TCP转发器

如何在程序集级别剖析C ++函数

读取包含复杂数据的Windows事件负载

(2)用HugeTLB改变虚拟地址?

Windows-1258是越南文文本的代码页。 日语不能在越南语代码页中表示,所以输出被映射到问号。 这同样适用于1252年,这只适用于西欧语言。

在1200的情况下,这不是一个真正的代码页: 根据MSDN ,它只适用于托管的应用程序(即.NET)。

我强烈建议直接使用Unicode,但是如果您绝对必须将其转换为多字节字符集,则需要一个支持日语的字符集,在这种情况下,Shift-JIS(代码页932)是常用的代码页。

是。 我保存RC文件使用VS 2010'高级保存选项' – >'Unicode – Codepage 1200',我尝试使用WideCharToMultiByte 1200代码页'1200',但仍然没有去。

那么这只是部分的技巧,实际上你需要在.rc文件中指定数据的编码,如下所示:

#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_JPN) #ifdef _WIN32 LANGUAGE LANG_JAPAnesE,SUBLANG_JAPAnesE_JAPAN #pragma code_page(932) #endif STRINGTABLE BEGIN STR_ID "<Japanese text goes here>" END #endif

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐