JUCE 界面库显示中文乱码问题

时间:2023-03-09 06:01:19
JUCE 界面库显示中文乱码问题

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编码的的编码。

版权所有,转载请注明出处!