我想知道在c ++中,我们如何支持UTF8编码?我认为c ++仅支持char和w_char,但是我想知道如何支持UTF-8?
支持UTF-8很好;UTF-8使用八位符号表示字符,每个字符都有一个或多个符号。该标准保证char至少要有8位,因此每个符合标准的C ++实现都可以读取,写入和处理UTF-8字符。由于7位ASCII是UTF-8的严格子集,因此char字符串和UTF-8 之间的转换也不成问题。
什么是一个问题是其它编码之间转换(代码页如Latin-1的或其他Unicode编码如UTF-16,UCS-2,UTF-32和UCS-4)和UTF-8。这是情况的大致概述:
wchar_t类型并允许使用宽字符串文字形式,L"XXX"但大部分细节仍由实现定义。因此,VC ++将其wchar_t视为16位,并将宽字符串文字编码为UTF-16;GCC视为wchar_t32位,并将宽字符串文字编码为UTF-32。char16_t并且char32_t,以及16位和32位的文字作为u"XXX"和U"XXX"。但是,VC ++尚不支持这些功能(GCC拥有它们)。codecvt模板支持编码之间的转换。至少在C ++ 98中添加了此功能,但支持却参差不齐。今天,VC ++似乎有合理的支持,但缺少GCC的支持。| 归档时间: |
|
| 查看次数: |
2126 次 |
| 最近记录: |