我试图将阿拉伯字符存储为wchar_t,然后将其打印到控制台,但无法使其工作。
我将控制台设置为UTF-8,如果我只是将它们输入控制台,阿拉伯字母就会显示(尽管没有加入)。
我已根据(How to initialize a wchar_t variable?)中的答案尝试了几种不同的方法,并且可以打印出其他unicode字符但不打印阿拉伯语...
到目前为止,我已尝试过:
下面的代码 - 给出了一个关于从没有强制转换的指针生成整数的错误:
#include <stdio.h>
#include <stdlib.h>
#include <wchar.h>
#include <locale.h>
int main ()
{
wchar_t a = L"ي";
setlocale(LC_ALL, "");
wprintf (L" here is my character - %lc",a);
return 0;
}
相同但使用单引号 - 运行但打印空白空间:
wchar_t a = L'ي';
unicode值本身 - 为其类型提供一个警告字符常量太长:
wchar_t a = L'\xd9\x84';
当我尝试使用非阿拉伯字符时似乎有效 - 如果我输入&#39; g&#39;它通过罚款和&#39; xd9&#39;给了我一个很好的U字符。我需要为阿拉伯语做些额外的事吗?
非常感谢任何帮助!我真的希望能够输入阿拉伯语而不必使用unicode号码。
我使用Windows和MinGW(尽管我还有问题,所以如果能解决问题就很乐意转换编译器)
答案 0 :(得分:0)
对于第一个示例,您需要使用%s格式才有机会。我没有用阿拉伯语尝试过,所以我不知道会发生什么。显而易见的问题是阿拉伯语是从右到左,而控制台是从左到右设计的。但是将字符串打印为字符是行不通的。
wchar_t不用于UTF-8。 UTF-8使用plain char *(编码的主要点)。 wchar_t使用扩展的16位代码点。如果你查找阿拉伯语代码点并输入数字,你至少应该从wprintf()获得阿拉伯语输出。输入阿拉伯字形是编辑器的一个问题,就像C ++本身一样。