已知在C中,字符串由char
s的数组表示。处理C字符串操作中的中文字符
而在大多数32位处理器中,char
需要一个字节或八位。并且一个字符串由一个byte
s的数组组成。
因为扩展字符如中文和日文占用以上位比8位,所以我对这个东西有点困惑。
例如,我测试了我可以使用像char array[100]
这样的语法来定义一组中文字符,就像定义一组英文字母一样。所以我的问题是:
是否有一种机制试图弥合一般8位字符和8位以上字符之间的差距,以便它们被视为相同,就像我之前提到的那样。
已知在C中,字符串由char
s的数组表示。处理C字符串操作中的中文字符
而在大多数32位处理器中,char
需要一个字节或八位。并且一个字符串由一个byte
s的数组组成。
因为扩展字符如中文和日文占用以上位比8位,所以我对这个东西有点困惑。
例如,我测试了我可以使用像char array[100]
这样的语法来定义一组中文字符,就像定义一组英文字母一样。所以我的问题是:
是否有一种机制试图弥合一般8位字符和8位以上字符之间的差距,以便它们被视为相同,就像我之前提到的那样。
我建议使用的UTF8编码字符串,因为它使得可以使用正常(字节< = 127)字符通常,此外,你就可以使用两相,三相或者通过检测Unicode控制字符(字节> = 128)来生成四字节字符。你也可以使用libiconv解决一些相关的问题。 http://www.gnu.org/software/libiconv/
您应该使用wchar_t代替,这将解释更多关于宽字符及其在C/C++中的使用。 http://en.wikipedia.org/wiki/Wide_character#C.2FC.2B.2B – 2012-03-18 07:13:18
您需要研究什么是所谓的MBCS或多字节字符集。 – 2012-03-18 07:43:23
@JesusRamos:'wchar_t'类型(相当于使用它的代码)并不是很便携,因为你不知道它使用什么编码,或者它是否支持Unicode。 – 2012-05-20 22:04:38