C语言的多字节字符(multibyte characters)是什么
多字节字符是使国际化的程序更容易编写的另一种途径。具体地说,它们有助于支持永远无法纳入8位字符的语言,例如汉语和日语。如果你的程序永远不需要使用除英语之外的其它任何语言,你可以不必了解多字节字符。
你不得不承认这样一个事实:可能到处都有人想使用你的软件,但并不是人人都懂英语。幸运的是,已经有了可以把欧洲语言的各种特殊字符纳入8位字符集的标准(不幸的是,这样的标准有好几种,并且它们相互并不一致)。
到了亚洲,这个问题变得更复杂。有些语言的字符超过256个,例如汉语和日语,它们永远无法纳入8位字符集中(一个8位字符能存放O和255之间的一个数字,因此它能只有256种不同的值)。
幸运的是,C标准库已经开始解决这个问题。<stddef.h>定义了wchar_t类型,它的长度足以存放c程序能处理的任何语言中的任何字符。根据到目前为止的所有协议,16位已经足够了。这通常就是short类型,但最好还是相信编译程序开发商所提供的wchar_t的正确性,以免在short类型的长度发生变化时遇到麻烦。
函数mblen(),mbtowc()和wctomb()能将单字节字符串转换为多字节字符。如果你想了解更多的有关这些函数的信息,请查阅你的编译程序手册。
你不得不承认这样一个事实:可能到处都有人想使用你的软件,但并不是人人都懂英语。幸运的是,已经有了可以把欧洲语言的各种特殊字符纳入8位字符集的标准(不幸的是,这样的标准有好几种,并且它们相互并不一致)。
到了亚洲,这个问题变得更复杂。有些语言的字符超过256个,例如汉语和日语,它们永远无法纳入8位字符集中(一个8位字符能存放O和255之间的一个数字,因此它能只有256种不同的值)。
幸运的是,C标准库已经开始解决这个问题。<stddef.h>定义了wchar_t类型,它的长度足以存放c程序能处理的任何语言中的任何字符。根据到目前为止的所有协议,16位已经足够了。这通常就是short类型,但最好还是相信编译程序开发商所提供的wchar_t的正确性,以免在short类型的长度发生变化时遇到麻烦。
函数mblen(),mbtowc()和wctomb()能将单字节字符串转换为多字节字符。如果你想了解更多的有关这些函数的信息,请查阅你的编译程序手册。