utf-16

python编码(六)

こ雲淡風輕ζ 提交于 2020-03-06 04:38:51
1. 字符编码简介 1.1. ASCII ASCII (American Standard Code for Information Interchange),是一种单字节的编码。计算机世界里一开始只有英文,而单字节可以表示256个不同的字符,可以表示所有的英文字符和许多的控制符号。不过ASCII只用到了其中的一半(\x80以下),这也是MBCS得以实现的基础。 1.2. MBCS 然而计算机世界里很快就有了其他语言,单字节的ASCII已无法满足需求。后来每个语言就制定了一套自己的编码,由于单字节能表示的字符太少,而且同时也需要与ASCII编码保持兼容,所以这些编码纷纷使用了多字节来表示字符,如 GBxxx 、 BIGxxx 等等,他们的规则是,如果第一个字节是\x80以下,则仍然表示ASCII字符;而如果是\x80以上,则跟下一个字节一起(共两个字节)表示一个字符,然后跳过下一个字节,继续往下判断。 这里,IBM发明了一个叫Code Page的概念,将这些编码都收入囊中并分配页码,GBK是第936页,也就是 CP936 。所以,也可以使用CP936表示GBK。 MBCS (Multi-Byte Character Set)是这些编码的统称。目前为止大家都是用了双字节,所以有时候也叫做 DBCS (Double-Byte Character Set)。必须明确的是

unicode, character, character set, encoding, utf-8

倾然丶 夕夏残阳落幕 提交于 2020-02-24 21:19:51
转: http://www.utf.com.cn/article/s1383 这些相关的东西并不复杂, 但非常容易混淆不清, 尤其是最近看了一些这方面的文章, 即使是被认为是权威的出处, 也经常出现冲突矛盾, 和用词不准确, 解释的概念不清楚的情况: 1. 字符集和编码方案混为一谈. http://www.utf.com.cn/article/s320 中说: UTF_8字符集 UTF-8是UNICODE的一种变长字符编码 后一句话对, 但前一句话, UTF-8是对Unicode字符集的可能的编码方案中的一种, 它本身不是字符集. 2. 字符集只是字义了一个虚拟的, 与电脑无关的一个字符的集合, 规定了在这些集合里面就有哪些字符, 每个字符被赋予一个编号, 编号不是编码, 编号是Unicode术语中的code point的概念, 这些字符就外在的人眼所能看到的形状而言不必是唯一的. 3. Unicode给每个字符赋予的唯一的code point, 只是一个数学概念上的数字, 不要与计算机里对数值的某种表示法联系起来, 还没到那一步, 那是由编码方案决定的. 这个概念上的数, 在Joel on software里的那篇文章" The Absolute Minimum Every Software Developer Absolutely, Positively Must Know

【STM32H7教程】第52章 STM32H7的LTDC应用之点阵字体和字符编码(重要)

﹥>﹥吖頭↗ 提交于 2020-02-14 14:49:04
完整教程下载地址: http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980 第52章 STM32H7的LTDC应用之点阵字体和字符编码(重要) 本章节主要为大家讲解ASCII字符集,ASCII扩展字符集,GB2312字符集,GBK字符集和Unicode字符集。其中,字符编码这块涉及到的知识点非常多,特别是Unicode字符集的编码,涉及到的知识点极其多。大家如果有精力的话,最好可以花点时间把Unicode的发展史捋清楚了。本章节笔者能够做的是把相关的知识点告诉大家,让大家有一个全面的认识。 52.1 初学者重要提示 52.2 编码基础知识 52.3 汉字点阵原理 52.4 总结 52.1 初学者重要提示 本章节讲解的GB2312和GBK比较容易理解,而Unicode是全球统一码,所以涉及到的知识点比较多,也复杂些。 当前Windows系统字符管理已经全部采用Unicode字符集,编码形式是UTF-16 LE (LE表示小端格式)编码。比如我们通过记事本保存的时候选择编码类型Unicode,其实就是选择的UTF-16 LE。而我们平时所说的中文版Windows系统是指用户在选择不支持Unicode的程序中显示文本时所使用的语言。 区分清楚什么是字符,字符集。字符(Character)是各种文字和符号的总称,包括各国家文字

Unicode字符编码规范

半世苍凉 提交于 2020-02-13 07:47:46
http://www.aoxiang.org 2006-4-2 10:48:02 Unicode是一种字符编码规范 。   先从ASCII说起。ASCII是用来表示英文字符的一种编码规范,每个ASCII字符占用1个字节(8bits)   因此,ASCII编码可以表示的最大字符数是256,其实英文字符并没有那么多,一般只用前128个(最高位为0),其中包括了控制字符、数字、大小写字母和其他一些符号 。   而最高位为1的另128个字符被成为“扩展ASCII”,一般用来存放英文的制表符、部分音标字符等等的一些其他符号,这种字符编码规范显然用来处理英文没有什么问题。(实际上也可以用来处理法文、德文等一些其他的西欧字符,但是不能和英文通用),但是面对中文、阿拉伯文之类复杂的文字,255个字符显然不够用   于是,各个国家纷纷制定了自己的文字编码规范,其中中文的文字编码规范叫做“GB2312-80”,它是和ASCII兼容的一种编码规范,其实就是利用扩展ASCII没有真正标准化这一点,把一个中文字符用两个扩展ASCII字符来表示。   但是这个方法有问题,最大的问题就是,中文文字没有真正属于自己的编码,因为扩展ASCII码虽然没有真正的标准化,但是PC里的ASCII码还是有一个事实标准的(存放着英文制表符),所以很多软件利用这些符号来画表格。这样的软件用到中文系统中

中文字符集编码unicode,gb2312,cp936,GBK,GB18030介绍

让人想犯罪 __ 提交于 2020-02-12 04:39:18
概要: UTF-8的一个特别的好处是它与ISO- 8859-1完全兼容,可以表示世界上所有的字符,汉字通常用3个字节来表示。GB2312的code page是CP20936。GBK的code page是CP936 。GB18030支持的字符数更多。GB2312、GBK、GB18030均为双字节。 整理这篇文章的动机是两个问题: 问题一: 使用Windows记事本的“另存为”,可以在GBK、Unicode、Unicode big endian和UTF-8这 几种编码方式间相互转换。同样是txt文件,Windows是怎样识别编码方式的呢? 我很早前就发现Unicode、Unicode big endian和UTF-8编码的txt文件的开头会多出几个字节,分别是FF、FE(Unicode),FE、FF(Unicode big endian),EF、BB、BF(UTF-8)。但这些标记是基于什么标准呢? 问题二:最近在网上看到一个ConvertUTF.c,实现了UTF-32、UTF-16和UTF-8这三种编码方式的相互转换。对于Unicode(UCS2)、GBK、UTF-8这些编码方式,我原来就了解。但这个程序让我有些糊涂,想不起来UTF-16和UCS2有什么关系。 查了查相关资料,总算将这些问题弄清楚了,顺带也了解了一些Unicode的细节。作者写成一篇文章,送给有过类似疑问的朋友

转: gbk, gb2312,big5,unicode,utf-8,utf-16的区别

和自甴很熟 提交于 2020-02-12 04:38:50
以前收藏的一篇 标题 谈谈Unicode编码,简要解释UCS、UTF、BMP、BOM等名词 选择自 fmddlmyy 的 Blog 关键字 谈谈Unicode编码,简要解释UCS、UTF、BMP、BOM等名词 这是一篇程序员写给程序员的趣味读物。所谓趣味是指可以比较轻松地了解一些原来不清楚的概念,增进知识,类似于打RPG游戏的升级。整理这篇文章的动机是两个问题: 问题一: 使用Windows记事本的“另存为”,可以在GBK、Unicode、Unicode big endian和UTF-8这几种编码方式间相互转换。同样是txt文件,Windows是怎样识别编码方式的呢? 我很早前就发现Unicode、Unicode big endian和UTF-8编码的txt文件的开头会多出几个字节,分别是FF、FE(Unicode),FE、FF(Unicode big endian),EF、BB、BF(UTF-8)。但这些标记是基于什么标准呢? 问题二: 最近在网上看到一个ConvertUTF.c,实现了UTF-32、UTF-16和UTF-8这三种编码方式的相互转换。对于Unicode(UCS2)、GBK、UTF-8这些编码方式,我原来就了解。但这个程序让我有些糊涂,想不起来UTF-16和UCS2有什么关系。 查了查相关资料,总算将这些问题弄清楚了,顺带也了解了一些Unicode的细节

How to print the utf-16 characters in c

五迷三道 提交于 2020-02-05 03:29:08
问题 int main() { char c = 0x41; printf("char is : %c\n",c); c = 0xe9; printf("char is : %c\n",c); unsigned int d = 0x164e; printf("char is : %c\n",d); return 0; } What I want to print out are: I use Ubuntu 64-bit VMware Workstation on windows and use Octal dump: The hexadecimal value of the three chars from an utf-16 LE txt file. The output: How to print out utf-16 characters correctly? 来源: https://stackoverflow.com/questions/39576310/how-to-print-the-utf-16-characters-in-c

05 Unicode

帅比萌擦擦* 提交于 2020-02-04 14:30:28
代码点 Unicode标准 的本意很简单:希望给世界上每一种文字系统的每一个字符,都分配一个唯一的整数,这些整数叫做代码点(Code Points)。 代码空间 所有的代码点构成一个代码空间(Code Space) ,根据Unicode定义,总共有 1,114,112 个代码点,编号从0x0到0x10FFFF。换句话说,如果每个代码点都能够代表一个有效字符的话,Unicode标准最多能够编码1,114,112,也就是大概110多万个字符。最新的Unicode标准(7.0)已经给超过11万个字符分配了代码点。 代码平面 Unicode标准把代码点分成了17个代码平面(Code Plane),编号为#0到#16。每个代码平面包含65,536(2^16)个代码点(17*65,536=1,114,112)。其中,Plane#0叫做基本多语言平面(Basic Multilingual Plane,BMP),其余平面叫做补充平面(Supplementary Planes)。Unicode7.0只使用了17个平面中的6个,并且给这6个平面起了名字,如下图所示: 下面是这些平面的名字和用途: BMP(Basic Multilingual Plane) 大部分常用的字符都坐落在这个平面内,比如ASCII字符,汉字等。 SMP(Supplementary Multilingual Plane)

Why Java char uses UTF-16?

耗尽温柔 提交于 2020-01-27 08:21:18
问题 Recently I read lots of thing about unicode code points and how they evolved over time and sure I read http://www.joelonsoftware.com/articles/Unicode.html this also. But something I couldn't find the real reason why Java uses UTF-16 for a char. For example If I had the string which contains 1024 letter of ASCII scoped charachter string. It means 1024 * 2 bytes which equals to 2KB string memory it will consume in anyway. So if Java base char would be UTF-8 it would be just 1KB of data. Even if

JSON.stringify() to UTF-8

为君一笑 提交于 2020-01-22 14:38:38
问题 Javascript uses as far as I know UTF-16 fundamentally as a standard for strings. With JSON.stringify() I can create a JSON string from an object. Is that JSON string UTF-16 encoded? Can I convert (hopefully fast) that string to UTF-8 to save bandwidth for huge files (1MB JSON)? 回答1: JavaScript engines are allowed to use either UCS-2 or UTF-16. So, yes, JSON.stringify() will return a string in whatever encoding your implementation uses for strings. If you were to find a way to change that