C++11与Unicode及使用标准库进行UTF-8、UTF-16、UCS2、UCS4/UTF-32编码转换

转载 2015年11月19日 19:47:01

C++11与Unicode及使用标准库进行UTF-8、UTF-16、UCS2、UCS4/UTF-32编码转 


本文转自:http://blog.poxiao.me/p/unicode-character-encoding-conversion-in-cpp11/

Unicode

Unicode是计算机领域的一项行业标准,它对世界上绝大部分的文字的进行整理和统一编码,Unicode的编码空间可以划分为17个平面(plane),每个平面包含2的16次方(65536)个码位。17个平面的码位可表示为从U+0000到U+10FFFF,共计1114112个码位,第一个平面称为基本多语言平面(Basic Multilingual Plane, BMP),或称第零平面(Plane 0)。其他平面称为辅助平面(Supplementary Planes)。基本多语言平面内,从U+D800到U+DFFF之间的码位区段是永久保留不映射到Unicode字符,所以有效码位为1112064个。最新的版本是Unicode 6.3发布于2013年9月30日。

Unicode的编码方式

对于被Unicode收录的字符其编码是唯一且确定的。但是Unicode的实现方式(出于传输、存储、处理或向后兼容的考虑)却有不同的几种,其中最流行的是UTF-8、UTF-16、UCS2、UCS4/UTF-32等,细分的话还有大小端的区别。

UTF-8(8-bit Unicode Transformation Format)

UTF-8是一种变长编码,对于一个Unicode的字符被编码成1至4个字节。Unicode编码与UTF-8的编码的对应关系如下表

Unicode编码 UTF-8编码(二进制)
U+0000 – U+007F 0xxxxxxx
U+0080 – U+07FF 110xxxxx 10xxxxxx
U+0800 – U+FFFF 1110xxxx 10xxxxxx 10xxxxxx
U+10000 – U+10FFFF 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

其中绝大部分的中文用三个字节编码,部分中文用四个字节编码,举例如下:

Unicode 字符 UTF-8编码
U+0041 A 0x41
U+7834 0xE7 0xA0 0xB4
U+6653 0xE6 0x99 0x93
U+2A6A5  

转 C++11与Unicode及使用标准库进行UTF-8、UTF-16、UCS2、UCS4/UTF-32编码转换 utf8转utf16 utf16转utf8

http://www.cppblog.com/Error/archive/2014/09/25/208413.html

C++11标准支持UTF-8编码

在新的C++标准C++11[1]中,增强了对Unicode的支持。 char被定义为能够存储UTF-8的8位编码。还增加了用于支持UTF-16和UTF-32的数据类型char16_t和char32_...

用C++ 对中文进行UTF-8编解码

#include #include #include #include string UTF8_URL_DECODE(string URLcode); string U...

python ucs-2与ucs-4编码方式判断

以 --enable-unicode=ucs4 编译则: >>> import sys >>> print sys.maxunicode 1114111 以 --enable-u...

字符串编码问题(Ascii、Unicode、UCS-2、GBK、UTF-8)

1.字符编码的发展 第一阶段:ASCII阶段,(American Standard Code for Information Interchange, “美国信息交换标准码),计算机当时只支持英语,字...

(转载)字符编码终极笔记:ASCII、Unicode、UTF-8、UTF-16、UCS、BOM、Endian

1、字符编码、内码,顺带介绍汉字编码
  • linphie
  • linphie
  • 2015年09月24日 16:07
  • 99

VC_字体编码格式_ASCII、Unicode、UTF-8、UTF-16、UCS、BOM、Endian

今天为了搞定字库的map在我们的系统定义里,结果发现里面的概念还挺多,上网学习下。看了好长时间 针对中文编码的表,连接,数据太大 http://www.ansell-uebersetzungen....

字符编码笔记:ASCII、Unicode、UTF-8、UTF-16、UCS、BOM、Endian

http://witmax.cn/character-encoding-notes.html 字符编码笔记:ASCII,Unicode和UTF-8作者: 阮一峰 版权声明:自由转载-非商用-非衍生-保...

字符编码笔记:ASCII、Unicode、UTF-8、UTF-16、UCS、BOM、Endian

1. ASCII码  我们知道,在计算机内部,所有的信息最终都表示为一个二进制的字符串。每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个字节(by...

字符与GBXX,UCS-2,utf-8编码的相互转换

在介绍转换之前,先介绍一下常见的字符集: 1ASCII:这个大家应该都比较熟悉,他把英文字母、数字等256个字符编码为Ox00-OxFF 2GBXX:包括GB2312、GBK、GB18030,这里面主...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C++11与Unicode及使用标准库进行UTF-8、UTF-16、UCS2、UCS4/UTF-32编码转换
举报原因:
原因补充:

(最多只允许输入30个字)