ucs

文件编码格式

一个人想着一个人 提交于 2020-01-20 23:03:09
从文件编码的方式来看,文件可分为ASCII码文件和二进制码文件两种。 ASCII文件也称为文本文件,这种文件在磁盘中存放时每个字符对应一个字节,用于存放对应的ASCII码。例如,数5678的存储形式为: ASC码:  00110101 00110110 00110111 00111000      ↓     ↓    ↓    ↓ 十进制码: 5     6    7    8 共占用4个字节。ASCII码文件可在屏幕上按字符显示, 例如源程序文件就是ASCII文件,用DOS命令TYPE可显示文件的内容。 由于是按字符显示,因此能读懂文件内容。 二进制文件是按二进制的编码方式来存放文件的。 例如, 数5678的存储形式为: 00010110 00101110只占二个字节。二进制文件虽然也可在屏幕上显示,但其内容无法读懂。C系统在处理这些文件时,并不区分类型,都看成是字符流,按字节进行处理。输入输出字符流的开始和结束只由程序控制而不受物理符号(如回车符)的控制。 因此也把这种文件称作“流式文件”。 UCS-2编码(16进制) UTF-8 字节流(二进制) 0000 - 007F 0xxxxxxx 0080 - 07FF 110xxxxx 10xxxxxx 0800 - FFFF 1110xxxx 10xxxxxx 10xxxxxx 问题一: 使用Windows记事本的“另存为”

文件编码格式

不问归期 提交于 2020-01-20 23:01:37
从文件编码的方式来看,文件可分为ASCII码文件和二进制码文件两种。 ASCII文件也称为文本文件,这种文件在磁盘中存放时每个字符对应一个字节,用于存放对应的ASCII码。例如,数5678的存储形式为: ASC码:  00110101 00110110 00110111 00111000      ↓     ↓    ↓    ↓ 十进制码: 5     6    7    8 共占用4个字节。ASCII码文件可在屏幕上按字符显示, 例如源程序文件就是ASCII文件,用DOS命令TYPE可显示文件的内容。 由于是按字符显示,因此能读懂文件内容。 二进制文件是按二进制的编码方式来存放文件的。 例如, 数5678的存储形式为: 00010110 00101110只占二个字节。二进制文件虽然也可在屏幕上显示,但其内容无法读懂。C系统在处理这些文件时,并不区分类型,都看成是字符流,按字节进行处理。输入输出字符流的开始和结束只由程序控制而不受物理符号(如回车符)的控制。 因此也把这种文件称作“流式文件”。 UCS-2编码(16进制) UTF-8 字节流(二进制) 0000 - 007F 0xxxxxxx 0080 - 07FF 110xxxxx 10xxxxxx 0800 - FFFF 1110xxxx 10xxxxxx 10xxxxxx 问题一: 使用Windows记事本的“另存为”

UNICODE,GBK,UTF-8区别

流过昼夜 提交于 2019-12-29 13:53:48
UNICODE,GBK,UTF-8区别 简单来说,unicode,gbk和大五码就是编码的值,而utf-8,uft-16之类就是这个值的表现形式.而前面那三种编码是一兼容的,同一个汉字,那三个码值是完全不一样的.如"汉"的uncode值与gbk就是不一样的,假设uncode为a040,gbk为b030,而uft-8码,就是把那个值表现的形式.utf-8码完全只针对uncode来组织的,如果GBK要转UTF-8必须先转uncode码,再转utf-8就OK了. 详细的就见下面转的这篇文章. 谈谈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)。但这些标记是基于什么标准呢? 问题二

HTML5 UTF-8 中文乱码

≡放荡痞女 提交于 2019-12-28 00:44:23
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>HTML5的标题</title> </head> <body> <p>HTML5的内容!Hello</p> </body> </html> 我是用记事本写的,保存后在网页上运行竟然出现了乱码。换成GB2312能正确显示中文。 <!DOCTYPE html> <html> <head> <meta charset="GB2312"> <title>HTML5的标题</title> </head> <body> <p>HTML5的内容!Hello</p> </body> </html> 但是毕竟标准不一样。还是要用Utf-8。最后发现代码没有一点问题, 问题就出记事本身上 。 <meta charste="utf-8"> 只是告诉浏览器要用utf-8来解释,而文档的编码,是在你保存时的选择决定的。如果保存ANSI 然后用utf-8解释,肯定是乱码。 记事本的话,默认保存的文件格式是ANSI。所以在保存的时候要修改为uif-8。记事本编写的同鞋一定要注意了。 搞定~ 科普: UTF-8 GBK UTF8 GB2312 之间的区别和关系 UTF-8 GBK UTF8 GB2312 之间的区别 UTF-8:Unicode TransformationFormat-8bit

How to change python from UCS2 to UCS4

大城市里の小女人 提交于 2019-12-18 02:42:55
问题 I have a Python2.7 with UCS2 build installed on Ubuntu 12.10. I just want to recompile python with UCS4 or enable UCS4. How should I do this? 回答1: Use: ./configure --enable-unicode=ucs4 to configure the source to build with UCS4 support. From the ./configure --help output: --enable-unicode[=ucs[24]] Enable Unicode strings (default is ucs2) 来源: https://stackoverflow.com/questions/19575727/how-to-change-python-from-ucs2-to-ucs4

Unicode UTF-8与GB18030编码解析(golang)

主宰稳场 提交于 2019-12-11 13:36:32
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 最早接触到编码问题时,无非是关于『乱码』一词,当某个程序或者网页或者数据库或者IDE中一看出现了乱码,就马上知道这是字符编码与解码不匹配,改下编码就好,就因为这个事情太简单,容易解决,甚至在一段时间看到一段乱码文字形状,就知道这肯定是xxx编码转为yyy编码存储然后又用xxx来显示导致的。。。 从来没有去纠结到底为什么有这么多编码,到底为何需要转换?是怎么转换的?如何转换?为什么都通用utf-8还有很多新项目在用GBK呢? 折腾了1个晚上,我明白了。。。以下我都用我自己理解的语言来描述下,分享下 ASCII编码 美国人发明计算机,美国人用八位表示1字节,8位的数据可以有2 8 =256 种状态描述事物。首先他添加进去了26个字母包括大小写,然后标点符号,换行符...然后用掉了128个,把这种做法取了个很吊名字叫『Ascii』,是『美国信息互换标准代码』的缩写。这也是我们小时候学习计算机的Ascii码表,当时貌似在C语言课本附录里面。 打印一个字符的Ascii码很简单 fmt.Printf("%d", 'A') GB系列编码 很明显,这个American Standard 从未考虑中国人的感受,你可以显示字母就完事了,中国的国粹汉字咋整?所以在中国的一群人开始做自己的编码,那是在1980年,做出来的是GB

UTF8 与 UTF8 +BOM 区别

房东的猫 提交于 2019-12-09 11:01:12
一个带标签,一个没有标签。 BOM是Byte Order Mark(定义字节顺序),因为在网络传输中分两种顺序:大头和小头。 由于兼容性,带BOM的utf-8在一些browser中显示为乱码。 网上搜索了关于Byte Order Mark的信息: 在UCS 编码中有一个叫做"ZERO WIDTH NO-BREAK SPACE"的字符,它的编码是FEFF。而FFFE在UCS中是不存在的字符,所以不应该出现在实际传输中。UCS规范建 议我们在传输字节流前,先传输字符"ZERO WIDTH NO-BREAK SPACE"。这样如果接收者收到FEFF,就表明这个字节流是Big-Endian的;如果收到FFFE,就表明这 个字节流是Little- Endian的。因此字符"ZERO WIDTH NO-BREAK SPACE"又被称作BOM。 UTF-8不需要BOM来表明字节顺序,但可以用BOM来表明编码方式。字符"ZERO WIDTH NO-BREAK SPACE"的UTF-8编码是EF BB BF。所以如果接收者收到以EF BB BF 开头的字节流,就知道这是UTF-8编码了。 Windows就是使用BOM来标记文本文件的编码方式的。 带BOM的UTF-8,所有PHP无法识别,直接将EF BB BF输出,在charset="utf-8"的页面中是空白

谈谈Unicode编码,简要解释UCS、UTF、BMP、BOM等名词

谁都会走 提交于 2019-12-07 15:07:17
整理这篇文章的动机是两个问题: 问题一: 使用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的细节。写成一篇文章,送给有过类似疑问的朋友。本文在写作时尽量做到通俗易懂,但要求读者知道什么是字节,什么是十六进制。 ###0、big endian和little endian big endian和little endian是CPU处理多字节数的不同方式。例如“汉”字的Unicode编码是6C49。那么写到文件里时,究竟是将6C写在前面

Locale: 字符集(character set).

◇◆丶佛笑我妖孽 提交于 2019-12-07 02:56:16
char 可被应用于所有8bit以及8bit以下的字符集,例如: US-ASCII,ISO-Latin-1和ISO-Latin-9以及UTF-8. char16_t 可被用于UCS-2,也可被用于UTF-16的code unit(代码单元). char32_t 可被用于UCS-4/UTF-32. wchar_t 它通常等价于char16_t或者char32_t. US-ASCII 7-bit字符集,于1963年完成标准化,用于电传打字机和其他设备,最开始的16个字符是不可打印的。 ISO-Latin-1或ISO-8859-1 这是一个8bit的字符集,于1987年完成标准提供西欧语言的所有字符, 这个字符集也是下面所有字符集的基础. UCS-2 这是一个 16bit的定长字符集(2byte) ,提供Universal Character Set(全球字符集)和Unicode(统一码)中最重要的65536个字符. UTF-8 这是个 multi-byte字符集 ,使用1-4个8bit值,用来表现Universal Character Set(全球字符集)和Unicode(统一码)的所有字符.主要被广泛的应用于万维网(world wide web). UTF-16 这也是一个 multi-byte字符集 ,使用1-2 code unit(每个16bit),用来表现Universal

关于乱码问题的一些思考

依然范特西╮ 提交于 2019-12-04 15:41:42
前言 从长沙辞职跑到深圳,找房子找工作适应新的工作环境超级忙。之前一直没时间好好写博客,今天难得有空就上来写点东西吧! 都9102年了,没想到还能有那么多乱码问题。之前的工作基本上前后端统一编码就完事了;话不多说,既然遇到了就干脆搞搞明白吧! 编码解码概述 我们都知道计算机不能直接存储字母,数字,图片,符号等,计算机能处理和工作的唯一单位是"比特位(bit)",一个比特位通常只有 0 和 1。利用比特位序列来代表字母,数字,图片,符号等,我们就需要一个存储规则,不同的比特序列代表不同的字符,这就是所谓的"编码"。反之,将存储在计算机中的比特位序列(或者叫二进制序列)解析显示出来成对应的字母,数字,图片和符号,称为"解码",如同密码学中的加密和解密,下面将详细解释编码解码过程中涉及到的一些术语: 字符集合 (Character set):是各种文字和符号的总称,包括各国家文字、标点符号、图形符号、数字等,简单理解就是一个字库,与计算机以及编码无关。 字符编码集 (Coded character set):是一组字符对应的编码(即数字),为字符集合中的每一个字符给予一个数字,如 Unicode 为每一个字符分配一个唯一的码点与之一一对应。 字符编码 (Character Encoding):简单理解就是一个映射关系,将字符集对应的码点映射为一个个二进制序列,从而使得计算机可以存储和处理