如何在C语言中使用特殊字符?

5

我意识到我的程序必须能够处理像日语或中文这样的特殊字符。但是我知道内置类型char远远不够用。那么我该如何在C程序中使用这些特殊字符呢?


4
《绝对最小限度:每个软件开发者必须了解的Unicode和字符集知识(无借口!)》。 - Jesse Good
4个回答

5
在Windows的Visual Studio中应该是这样的 :)
#include <tchar.h>
typedef struct _我的结构{
    int 数据;
    TCHAR 字符串指针[100];
}我的结构;
int main(int argc,char** argv){
    我的结构 我的变量 = {1, _T("字符串123abc")};
    _tprintf(_T("%s, %d"),我的变量.字符串指针,我的变量.字符串指针);
    return 0;
}

4

如果你可以接受一个字节不等于一个Unicode字符的事实,那么你可以使用UTF-8编码。


它使用相同的Unicode字符表。UTF8使用可变长度编码。顺便说一下,每个PHP开发人员都必须处理这个;) - mazatwork

2

对于Unicode类型的语言,您可以使用wchar_t而不是char。


我需要任何头文件吗?还有需要注意的事项吗? - OneZero
是的,你需要非常注意你正在使用wchar_t,有丰富的函数库等等,比如wstring等。你需要查阅文档以便了解如何处理它们,如何声明字符串字面值等。 - Keith Nicholas

2
你需要使用宽字符
它们是Unicode所需的,可以处理几乎所有字符,因为它可以消耗更多的字节(两倍多;听起来很多,但大部分情况下并不是这样)。
注意: 在Windows编程中,您可以使用 TEXT("") 宏选择您的字符是Unicode还是ANSI。它将根据您的项目设置进行选择。 如果您坚持要使用Unicode,可以在字符串前面加上L字母,例如:L"Unicode String" 与宽字符一起工作的头文件是wchar.h

setlocale(LC_ALL,""); 这行代码是做什么的? - OneZero
@user1229490 这里提供一个参考链接:http://www.cplusplus.com/reference/clibrary/clocale/setlocale/ - MasterMastic
不要忘记考虑 utf-8。这样你就不需要使用宽字符。 - Matt
@Matt 你是指像UTF8-CPP这样的第三方库吗? - MasterMastic
@Ken utf-8 是任何使用 8 位字符值的东西本质上都支持的。 - Matt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接