JUCE 界面库显示中文乱码问题
环境:
Windows7 64位 旗舰版
Visual Studio Ultimate 2012
JUCE 4.1
问题描述:
直接使用juce::String存储中文(String str="中文"),运行过程中报错,提示需要指定具体的编码类型,由于CharPointer_ASCII只能处理编码在127以下的字符,所以CharPointer_ASCII不能处理中文,而使用CharPointer_UTF8将UTF8编码的字符串转给String,但是显示到界面上却是乱码,由此出现了JUCE中文乱码的问题。
解决办法:
1.修改JUCE工程的AppConfig.h中的JUCE_USE_DIRECTWRITE,(请参考)修改后如下所示:
#ifndef JUCE_USE_DIRECTWRITE
#define JUCE_USE_DIRECTWRITE 0
#endif
2.在主应用程序的initialise函数中添加如下代码:
如:继承自JUCEApplication的子类的initialise()函数的开始:
LookAndFeel &laf = LookAndFeel::getDefaultLookAndFeel();
laf.setDefaultSansSerifTypefaceName( "YeHei Consolas Hybrid" );
其中"YeHei Consolas Hybrid"字符串来自于[c:windows/fonts]目录下的字体类型名称,去掉后面的空格和“常规”;
3.在需要使用中文字符的地方使用如下代码:
juce::String str( juce::CharPointer_UTF8("\xe4\xb8\xad\xe6\x96\x87") );
其中"\xe4\xb8\xad\xe6\x96\x87"字符串就是多字节下"中文"转换成UTF8编码的的编码。
版权所有,转载请注明出处!