在C字符串操作中处理中文字符

时间:2012-03-18 07:09:06

标签: c string encoding cjk

众所周知,在C中,字符串由char s。

数组表示

在大多数32位处理器中,char占用一个字节或八位。字符串由一个byte s的数组组成。

因为像中文和日文这样的扩展字符占用更多位而不是8位,所以我对此处的内容感到有些困惑。

例如,我测试过我可以使用类似char array[100]的语法定义一个中文字符数组,就像定义英文字母数组一样。所以我的问题是:

是否有一种机制试图弥合一般8位字符和大于8位字符之间的差距,以便它们被视为相同,就像我上面提到的那样。

2 个答案:

答案 0 :(得分:3)

是的,使用多字节字符编码。这是一个相当广泛的主题,但从以下内容开始:

答案 1 :(得分:0)

我建议使用UTF8字符串编码,因为它可以像往常一样使用普通(字节< = 127)字符,此外,你将能够使用两个,三个或者通过检测Unicode控制字符(字节> = 128)的四字节字符。您还可以使用libiconv来解决一些相关问题。 http://www.gnu.org/software/libiconv/