[英]Converting string in host character encoding to Unicode in C
有没有一种方法可移植 (即符合C标准)将主机字符编码中的字符串转换为Unicode代码点数组? 我正在使用某些数据序列化软件,但遇到了一个问题,因为尽管我需要通过电线发送UTF-8,但C标准不能保证ASCII编码,因此需要将字符串转换为主机字符编码可能是一项艰巨的任务。
是否有图书馆为我处理此类事情? C标准库中是否隐藏了可以执行以下操作的函数?
C11标准ISO / IEC 9899:2011具有一个新的标头<uchar.h>
其中包含一些基本功能来提供帮助。 §7.28Unicode实用程序<uchar.h>
对此进行了描述。
定义了两对函数:
c16rtomb()
和mbrtoc16()
—使用类型char16_t
aka uint_least16_t
。 c32rtomb()
和mbrtoc32()
—使用类型char32_t
aka uint_least32_t
。 名称中的r
表示“可重启”; 这些功能旨在迭代调用。 mbrtoc{16,32}()
对从多字节代码集(因此为mb
)转换为char16_t
或char32_t
。 c{16,32}rtomb()
对从char16_t
或char32_t
转换为多字节字符序列。
我不确定他们是否会做你想要的。 该<uchar.h>
头,因此功能不可用在Mac OS X 10.9.1与无论是苹果提供的clang
或用“自制” GCC 4.8.2,所以我不会有机会调查他们。 标头确实在带有GCC 4.8.1的Linux(Ubuntu 13.10)上可用。
我认为ICU可能是一个更好的选择-但是,它是一个相当大的库(但这是因为它在支持通用Unicode和通用不同语言环境方面做得很透彻)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.