- 论坛徽章:
- 1
|
原帖由 ives518 于 2005-12-31 22:50 发表
不知Qiao老大有没有调试过这里提高的程序,我出现的情况是:iconv后UCS-2是little endian,而 UCS-4是big endian的,我没有找到有关文档,在这里请教一下,这是iconv的版本问题还是UCS的规范是这样的?
libiconv介绍
仍然有在Unicode和其他的传统编码之间转换的需求。GNU的libiconv就是为这两种应用设计的编码转换库。
libiconv介绍
由于历史原因,国际化的文字常常由于语言或者国家的原因使用不同的编码。随着互联网时代的到来,通过互联网进行文字交流也逐渐增多:浏览外国的网站,这个时候字符编码的转换变得尤为重要。这带来了一个问题,就是许多字符在某一种编码方式中没有。为了解决这种混乱,Unicode的编码方式被建立。 Unicode是一种超级编码包含了所有这些编码的字符集,因此一些新的文本格式像XML的默认编码方式就是Unicode.
但是很多老式的计算机还在使用当地的传统的字符编码方式。而一些程序,例如邮件程序和浏览器必须能在这些不同的用户编码之间作转换。其他的一些程序则内置支持Unicode,以顺利支持国际化的处理,但是仍然有在Unicode和其他的传统编码之间转换的需求。GNU的libiconv就是为这两种应用设计的编码转换库。
详细资料
libiconv库为需要做转换的应用提供了一个iconv()的函数,以实现一个字符编码到另一个字符编码的转换。
包括的编码有:
欧洲语系 ASCII, ISO-8859-{1,2,3,4,5,7,9,10,13,14,15,16}, KOI8-R, KOI8-U, KOI8-RU, CP{1250,1251,1252,1253,1254,1257}, CP{850,866}, Mac{Roman,CentralEurope,Iceland,Croatian,Romania}, Mac{Cyrillic,Ukraine,Greek,Turkish}, Macintosh
犹太语系 ISO-8859-{6,8}, CP{1255,1256}, CP862, Mac{Hebrew,Arabic}
日文 EUC-JP, SHIFT_JIS, CP932, ISO-2022-JP, ISO-2022-JP-2, ISO-2022-JP-1
中文 EUC-CN, HZ, GBK, GB18030, EUC-TW, BIG5, CP950, BIG5-HKSCS, ISO-2022-CN, ISO-2022-CN-EXT
朝鲜文 EUC-KR, CP949, ISO-2022-KR, JOHAB
亚美尼亚语 ARMSCII-8
格鲁尼亚语 Georgian-Academy, Georgian-PS
塔吉克语 KOI8-T
泰国语 TIS-620, CP874, MacThai
老挝语 MuleLao-1, CP1133
越南语 VISCII, TCVN, CP1258
特殊平台 HP-ROMAN8, NEXTSTEP
全部Unicode UTF-8 UCS-2, UCS-2BE, UCS-2LE UCS-4, UCS-4BE, UCS-4LE UTF-16, UTF-16BE, UTF-16LE UTF-32, UTF-32BE, UTF-32LE UTF-7 C99, JAVA
按照uint16_t或uint32_t的全部Unicode(with machine dependent endianness and alignment) UCS-2-INTERNAL, UCS-4-INTERNAL
按照`char\'或`wchar_t\'的某些本地依赖 (with machine dependent endianness and alignment, and with OS and locale dependent semantics) char, wchar_t 犹太语系 空编码名称等价于"char",它不依赖于本地编码
当选择了配置选项 --enable-extra-encodings 以后,会支持下面几种扩展编码:
欧洲语系 CP{437,737,775,852,853,855,857,858,860,861,863,865,869,1125}
犹太语系 CP864
日语 EUC-JISX0213, Shift_JISX0213, ISO-2022-JP-3
土库曼语 TDS565
特殊平台 RISCOS-LATIN1
通过到Unicode的转换,所有这都可以互相转换些编码。
当然这个翻译也有局限性,比如当一个字符在目标的编码里没有的对应字符的时候,转换程序会自动选择一个最相近的。当目标编码前面加上"//TRANSLIT"的时候,转换开始。
libiconv多被用在应用需要多字节编码而目标系统部支持多自己编码的时候。 |
|