c - 将阿拉伯字符声明并打印为 wchar_t

标签 c unicode

我尝试将阿拉伯字符存储为 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';

当我尝试非阿拉伯字符时,它似乎有效 - 如果我输入“g”,它会很好地显示,而“xd9”会给我一个很好的带重音的 U 字符。我需要为阿拉伯语做一些额外的事情吗?

任何帮助将不胜感激!我真的希望能够输入阿拉伯语,而不必使用 unicode 数字。

我正在使用 Windows 和 MinGW(尽管无论如何我都遇到了问题,所以如果解决了问题我很乐意切换编译器)

最佳答案

对于第一个示例,您需要使用 %s 格式才有机会。我还没有尝试过阿拉伯语,所以我不知道会发生什么。明显的问题是阿拉伯语是从右到左,而控制台是从左到右设计的。但是将字符串打印为字符是行不通的。

wchar_t 不用于 UTF-8。 UTF-8 使用纯 char *(编码的要点)。 wchar_t 使用扩展的 16 位代码点。如果您查找阿拉伯语代码点并将其输入为数字,您至少应该从 wprintf() 获得阿拉伯语输出。输入阿拉伯字形对于编辑器来说是一个问题,就像 C++ 本身一样。

关于c - 将阿拉伯字符声明并打印为 wchar_t,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44375754/

相关文章:

python - Python 2.6 中对 csv 文件的通用 Unicode/UTF-8 支持

python - NameError 即使在上面的行中有直接的、无条件的赋值

php - 混合编码并使一切成为 UTF-8

c - C 中的方程翻译示例?

c - printf 在一定程度上跟随零

c - 使用 POSIX API 读取文件

unicode - 用于表示组合字符的 unicode 字形是什么?

javascript - javascript正则表达式和swift正则表达式之间的区别

c - 如果我有真值表,是否有办法确定该真值表所需的按位表达式?

c - GTK 与 C 和 Eclipse