在MFC视图中显示阿拉伯语/Unicode
我试图在MFC视图类中显示一个简单的Unicode字符串。问题可以简化为以下代码在MFC视图中显示阿拉伯语/Unicode,unicode,mfc,Unicode,Mfc,我试图在MFC视图类中显示一个简单的Unicode字符串。问题可以简化为以下代码 CString arabic (_T("مرحبا العالم")); pDC->TextOutW (50, 50, arabic); 问题是MFC窗口显示的是条形图,而不是下面的屏幕截图所示的阿拉伯字符。有人能说出我做错了什么吗 如果有必要的话,我正在使用VS2003 编辑:当我在设备上下文中选择字体对象时,应用程序的行为会改变,但仍然不正确;它显示以下字符,好像我使用了错误的代码页: 这意味着所选字
CString arabic (_T("مرحبا العالم"));
pDC->TextOutW (50, 50, arabic);
问题是MFC窗口显示的是条形图,而不是下面的屏幕截图所示的阿拉伯字符。有人能说出我做错了什么吗
如果有必要的话,我正在使用VS2003
编辑:当我在设备上下文中选择字体对象时,应用程序的行为会改变,但仍然不正确;它显示以下字符,好像我使用了错误的代码页:
这意味着所选字体没有可用字符 您必须选择在设备上下文中包含所需字形的字体 可能是这样的:
CFont font;
font->CreateFont(16,0,0,0,400,FALSE,FALSE,0,ANSI_CHARSET,
OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,
ANTIALIASED_QUALITY,DEFAULT_PITCH|FF_SWISS,
"Tahoma");
pDC->SelectObject(font);
是的,字体似乎丢失了,但现在代码页似乎有一些问题;请参见问题的编辑部分。这很奇怪,因为我使用的是Unicode,代码页应该是无关的。您是否使用Unicode定义编译您的项目?如果没有,你必须至少用定义的MBCS编译它,否则你的应用程序就不能正确处理这样的unicode字符,不管你使用什么代码页OK。通过保存包含字符串文字的.cpp文件,并使用编码:UTF-8和签名,可以解决这个问题。我使用的另一个选项,没有签名的UTF-8,不起作用!