c - 如何在C代码中引用一个汉字

标签 c unicode chinese-locale

我有一个 C 程序,当前读取中文文本并将它们存储为 type wchar_t .我想做的是在文本中查找特定字符,但我不确定如何引用代码中的字符。

我基本上想说:

wchar_t character;

if (character == 个) {
    return 1;
}

else return 0;

显然,省略了一些逻辑。我将如何在 C 中对中文执行这样的逻辑?

编辑:让它工作。此代码使用 -std=c99 编译,并打印出字符“个”。
1 #include <locale.h>
2 #include <stdio.h>
3 #include <wchar.h>
4 
5 
6 int main() {
7         wchar_t test[] = L"\u4E2A";
8         setlocale(LC_ALL, "");
9         printf("%ls", test);
10 }

最佳答案

根据您的编译器,如果它允许使用受支持的 Unicode 编码的源代码,您可以只与实际符号进行比较,否则,您可以使用宽字符常量:

#include <stdio.h>

int main()
{
    int i;
    wchar_t chinese[] = L"我不是中国人。";
    for(i = 0; chinese[i]; ++i)
    {
        if(chinese[i] == L'不')
            printf("found\n");
        if(chinese[i] == L'\u4E0D')
            printf("also found\n");
    }
}

注意宽字符串是 L"xxx"而宽字符是 L'x' . Unicode BMP 代码点可以用 \uXXXX 指定.

仅供引用,我使用带有 BOM、UTF-16(小端)和 UTF-16(大端)的 UTF-8 源编码编译了 Visual Stdio 2012。没有 BOM 的 UTF-8 不起作用。

关于c - 如何在C代码中引用一个汉字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29724599/

相关文章:

powershell - Powershell强制将ConvertFrom-Json输出转换为字符串,然后可以在所有字符串操作中使用它,包括。文件命名

MySQL 5.7 未匹配双汉字词

java - Java 中的中文字符串处理?

C语言-凯撒加密程序

c++ - 为什么某些类型(带有数组表示法)在没有 typedef 的情况下不能用作 C 中的返回类型?

perl - perl 中的 Unicode,mkdir 练习

python - 正则表达式问题求助

c - mmap 问题 -> 段错误

C套接字从接受返回的文件描述符中获取IP地址

c++ - (C++)。非unicode语言(简体中文)输入/输出