字符编码

字符集和编码

左心房为你撑大大i 提交于 2020-01-20 15:21:05
转自: http://wenku.baidu.com/view/cb9fe505cc17552707220865.html 随便说说字符集和编码 快下班时,爱问问题的小朋友Nico又问了一个问题: "sqlserver里面有char和nchar,那个n据说是指unicode的数据,这个是什么意思。" 并不是所有简单的问题都很容易回答,就像这个问题一样。于是我答应专门写一篇BLOG来从头讲讲编码的故事。那么就让我们找个草堆坐下,先抽口烟,看看夜晚天空上的银河,然后想一想要从哪里开始讲起。嗯,也许这样开始比较好…… 很久很久以前,有一群人,他们决定用8个可以开合的晶体管来组合成不同的状态,以表示世界上的万物。他们看到8个开关状态是好的,于是他们把这称为"字节"。 再后来,他们又做了一些可以处理这些字节的机器,机器开动了,可以用字节来组合出很多状态,状态开始变来变去。他们看到这样是好的,于是它们就这机器称为"计算机"。 开始计算机只在美国用。八位的字节一共可以组合出256(2的8次方)种不同的状态。 他们把其中的编号从0开始的32种状态分别规定了特殊的用途,一但终端、打印机遇上约定好的这些字节被传过来时,就要做一些约定的动作。遇上00x10, 终端就换行,遇上0x07, 终端就向人们嘟嘟叫,例好遇上0x1b, 打印机就打印反白的字,或者终端就用彩色显示字母。他们看到这样很好

Unicode字符集和编码方式

余生颓废 提交于 2020-01-20 14:31:06
通常将一个标准中能够表示的所有字符的集合称为字符集,比如ISO/Unicode所定义的字符集为Unicode。在Unicode中,每个字符占据一个码位/Unicode 编号(用4位十六进制数表示,Code point:U+ FFFF),如U+ 0000为“Null”,U+ 597D="好"。Unicode字符集共定义了1 114 112个这样的位,使用从0到10FFFF的十六进制数唯一地表示世界上几乎所有的字符。 NCR(Numeric Character Reference),以「&#」开头的后接十进制数字,以「&#x」开头的后接十六进制数字。数字取值为目标字符的 Unicode code point。 U+002C === , 虽然字符集中的码位唯一,但由于计算机存储数据通常是以字节为单位的,而且出于兼容之前的 ASCII(0x00-0x7F) 、节省存储空间等诸多原因,需要一种具体的编码方式来对字符码位进行标识。规定每个字符的Unicode编号如何存储(用一个字节还是多个字节存储,用哪些字节来存储),这个规定就叫做“编码”。常见的基于Unicode字符集的编码方式有UTF-8、UTF-16及UTF-32。 字符集中的字符与Unicode 编号一一映射,对Unicode编号进行编码转为二进制存入内存。同一段二进制,每一个字节一个编号还是每两个字节一个编号,解码方式不一样

字符编码和字符集

妖精的绣舞 提交于 2020-01-20 10:15:22
字符编码和字符集 字符编码 计算机中储存的信息都是用二进制数表示的,而我们在屏幕上看到的数字、英文、标点符号、汉字等字符是二进制数转换之后的结果。按照某种规则,将字符存储到计算机中,称为 编码 。反之,将存储在计算机中的二进制数按照某种规则解析显示出来,称为 解码 。比如说,按照A规则存储,同样按照A规则解析,那么就能显示正确的文本符号。反之,按照A规则存储,再按照B规则解析,就会导致乱码现象。 编码:字符(能看懂的)--字节(看不懂的) 解码:字节(看不懂的)-->字符(能看懂的) 字符编码 Character Encoding : 就是一套自然语言的字符与二进制数之间的对应规则。 编码表:生活中文字和计算机中二进制的对应规则 字符集 字符集 Charset :也叫编码表。是一个系统支持的所有字符的集合,包括各国家文字、标点符号、图形符号、数字等。 计算机要准确的存储和识别各种字符集符号,需要进行字符编码,一套字符集必然至少有一套字符编码。常见字符集有ASCII字符集、GBK字符集、Unicode字符集等。 可见,当指定了 编码 ,它所对应的 字符集 自然就指定了,所以 编码 才是我们最终要关心的。 ASCII字符集 : ASCII(American Standard Code for Information Interchange,美国信息交换标准代码

Python_打印编码值

喜你入骨 提交于 2020-01-19 20:07:03
for循环语句、ord()函数的应用 ''' 在终端中获取一个字符串,打印每个字符的编码值 ''' string = input ( '请输入任意内容:' ) for i in string : print ( ord ( i ) ) 来源: CSDN 作者: Rookie_Max 链接: https://blog.csdn.net/Rookie_Max/article/details/104042539

Python_根据编码值获取字符

北城余情 提交于 2020-01-19 19:04:27
死循环、chr()函数的应用 ''' 在终端中循环录入编码值,打印每个文字,要求如果录入空字符串,则程序退出 ''' while True : str_number = input ( '按回车退出程序or输入任意编码值:' ) if str_number == '' : print ( '程序结束!' ) break else : number = int ( str_number ) print ( chr ( number ) ) 来源: CSDN 作者: Rookie_Max 链接: https://blog.csdn.net/Rookie_Max/article/details/104042566

ES6关于Unicode的相关扩展

北城余情 提交于 2020-01-18 02:03:02
前面的话   JS中的字符串类型是由引号括起来的一组由16位Unicode字符组成的字符序列。在过去,16位足以包含任何字符,直到Unicode引入了扩展字符集,编码规则不得不进行变更。本文将详细介绍ES6关于Unicode的相关扩展 概述   Unicode的目标是为世界上每一个字符提供唯一标识符,唯一标识符称为码位或码点(code point)。而这些码位是用于表示字符的,又称为字符编码(character encode)   在ES6之前, JS 的字符串以 16 位字符编码(UTF-16)为基础。每个 16 位序列(相当于2个字节)是一个编码单元(code unit),可简称为码元,用于表示一个字符。字符串所有的属性与方法(如length属性与charAt() 方法等)都是基于16位序列 【BMP】   最常用的Unicode字符使用16位序列编码字符,属于“基本多语种平面”(Basic Multilingual Plane BMP),也称为“零断面”(plan 0), 是Unicode中的一个编码区段,编码介于U+0000——U+FFFF之间。超过这个范围的码位则要归属于某个辅助平面或称为扩展平面(supplementary plane),其中的码位仅用16位就无法表示了   为此,UTF-16引入了代理对(surrogate pairs)

Mysql之字符集

六月ゝ 毕业季﹏ 提交于 2020-01-17 06:55:23
Mysql 常见数据类型 INT类型 TINTINT 1字节(256) 2的8次 INT 4字节(4294967296)2的32次 BIGINT 8字节 DATE类型 DATE 3字节 TIMESTAMP 4字节 STRING类型 CHAR(M) M字节 1<=M<=255 (左边对齐) VARCHAR(M) L+1字节 L<=M 1<=M<=255 BLOB,TEXT L+2字节 L<2^8 Mysql数据库字符集知识   字符集就是一套文字符号及其编码、比较规则的集合   Mysql数据库字符集包括字符集(character)和校对规则(collation)两个概念。字符集定义mysql数据字符串的存储方式,校对规则定义比较字符串的方式。 mysql 数据库常见字符集 一个汉字长度 说明 GBK 2 不是国际标准,对中文支持较好(需支持中文,数据量大,性能要求高) UTF-8 3 扩展B区以后的汉字占四个字节中英混合环境,用的最多,没特别需求,建议此种 latin1 1 yum安装默认字符集 utf8mb4 4 UTF-8 Unicode,移动互联网 企业场景创建什么字符集的数据库呢? 1、根据开发程序确定的字符集(建议utf8) 2、在编译时候指定字符集 3、建库的时候默认创建即可mysql> show char set; 查看字符集设置情况 1、查看当前数据库字符集设置

MySQL字符集

☆樱花仙子☆ 提交于 2020-01-17 06:52:14
MySQL字符集包括字符集(character)和(collation)两个概念。字符集是用来定义MySQL存储字符串的规则,校对规则则是定义了比较字符串的方式。字符串和校对规则是一对多的>关系。使用命令:show collation like 'gbk';可查看相关的校对规则;使用:show character set;查看所有可用的字符集。 校对规则命名约定:它们以其相关的字符集开头,通常包括一个语言名,以一个_ci(不区分大小写)、_cs(大小写敏感)或_bin(二元,即比较是基于字符集编码的值而与language无关)结束。 MySQL的字符集和校对规则有4个级别的默认值:服务器级、数据库级、表级和字段级。 服务器字符集设定(默认为:latin1作为服务器字符集): 在my.cnf中设定:default-character-set=gbk 在服务器启动时指定:mysqld --default-character-set=gbk 在编译的时候制定:./configure --with-character=gbk 使用命令:show variables like 'character_set_server';查看当前服务器使用的字符集和校对规则。 数据库的字符集和校对规则在创建数据库的时候指定,也可以在创建完数据库后通过'alter table'命令进行修改

mysql字符集问题

纵饮孤独 提交于 2020-01-17 06:48:30
字符集是一套文字符号及其编码、比较规则的集合 mysql数据库字符集包括字符集(character)和校对规则(collation),其中字符集定义mysql数据字符串的存储方式,校对规则定义比较字符串的方式。 常见字符集 长度 说明 Gbk 2 不是国际标准 Utf-8 3 中英文混合建议,目前使用较多 Latin1 1 mysql默认字符集 Utf8mb4 4 Utf-8 unicode 移动互联网 如果处理各种各样的文字发布到不同国家地区,应选择utf-8 如果只需支持中文,并且数据量大性能要求高,可选GBK 处理移动互联网,可能需要使用utf8mb4 字符集总结: 1.客户端设置set names 字符集、mysql命令指定字符集登录(临时修改client、connection和results的结果),可以确保插入后的中文不会出现乱码,但是两种方式都是临时生效,且对设置之前插入的中文无效 2.在mysql的my.cnf配置文件[client]模块下设置default-character-set=字符集,相当于set names 字符集,且永久生效,且无需重启服务,对设置之前插入的中文无效 3.在mysql的my.cnf配置文件[mysqld]模块下设置character-set-server=字符集,重启后生效后,之后创建的数据库和表默认都是这个字符集

让MySQL支持emoji表情

大兔子大兔子 提交于 2020-01-17 04:51:14
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。 http://suifu.blog.51cto.com/9167728/1847087 公司有新要求,ios客户端要上线评论中可以使用emoji表情的功能,在mysql 5.5 之前,UTF-8编码只支持1-3个字节;从MySQL 5.5开始,可以支持4个字节UTF编码 utf8mb4 ,一个字符能够支持更多的字符集,也能够支持更多表情符号。 utf8mb4兼容utf8,且比utf8能表示更多的字符,是utf8字符集的超集。所以现在一些新的业务,比如ISO中的emoji表情,会将MySQL数据库的字符集设置为utf8mb4。 先看问题: Caused by: java.sql.SQLException: Incorrect string value: '\xF6\x9D\x98\x84' for column 'comment' at row 1 at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1074) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4096) at com.mysql.jdbc.MysqlIO