Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在MFC视图中显示阿拉伯语/Unicode_Unicode_Mfc - Fatal编程技术网

在MFC视图中显示阿拉伯语/Unicode

在MFC视图中显示阿拉伯语/Unicode,unicode,mfc,Unicode,Mfc,我试图在MFC视图类中显示一个简单的Unicode字符串。问题可以简化为以下代码 CString arabic (_T("مرحبا العالم")); pDC->TextOutW (50, 50, arabic); 问题是MFC窗口显示的是条形图,而不是下面的屏幕截图所示的阿拉伯字符。有人能说出我做错了什么吗 如果有必要的话,我正在使用VS2003 编辑:当我在设备上下文中选择字体对象时,应用程序的行为会改变,但仍然不正确;它显示以下字符,好像我使用了错误的代码页: 这意味着所选字

我试图在MFC视图类中显示一个简单的Unicode字符串。问题可以简化为以下代码

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,不起作用!