从数据展示中汉字缺失了解字符编码知识

混世魔王
• 阅读 608

有人在使用皕杰报表时遇到如下问题: 从数据展示中汉字缺失了解字符编码知识 有些汉字变成了“?”,这是为什么呢?实际上就是你用的字符集里没有这个汉字导致的,要想搞懂这个问题,还得从字符、字符集、字符编码说起。 所谓字符,就是各种文字和符号的总称。 所谓字符集,就是很多字符组成的集合。 所谓编码,就是通过一定的映射规则将字符表示成计算机中的数据以编码和存储。 由于映射规则不同,所以字符的编码不是唯一的,于是就产生了各种各样的字符集,但这些字符集有相通的部分,那就是都兼容ASCII字符集。 从数据展示中汉字缺失了解字符编码知识 ASCII是最基本的英文字符集,是计算机的基础。ASCII中每个字符占用一个字节的后面7位,最前面的1位统一规定为0。在ASCII编码中,共有128个字符,其中031 是控制字符如换行回车删除等,32126 是可打印字符,可以通过键盘输入并且能够显示出来。 下面就学习一下常用的字符集: 一、 iso8859字符集 iso8859字符集实际上是ASCII码 的扩展,称为EASCII(Extended ASCII)。在EASCII中表示的256个字符中,前128字符和ASCII编码表示的字符完全一样,后128个字符由欧洲各个国家或地区定义自己的编码标准。 根据这个规则,就形成了一系列标准:ISO-8859-1、ISO-8859-2、ISO-8859-3、……、ISO-8859-16。这些子标准适用于欧洲不同的国家地区,例如: ISO8859-1 字符集,也就是 Latin-1,是西欧常用字符,包括德法两国的字母。 ISO8859-2 字符集,也称为 Latin-2,收集了东欧字符。 ISO8859-3 字符集,也称为 Latin-3,收集了南欧字符。 其它具体是哪个国家的标准请自行查询。 二、 Unicode字符集 Unicode是由Unicode联盟开发的一种字符编码方案,旨在通过对所有人类语言中的字符进行编码,实现跨平台、跨应用程序和跨语言的数据交换。Unicode字符集是一个很大的字符集合,包含了全世界所有的字符。Unicode只是一个字符集,它只规定了符号的二进制代码,却没有规定这个二进制代码应该如何编码如何存储。于是出现了三种编码规则,分别用1到4个字节,2个字节以及4个字节表示一个字符,对应的编码是utf-8,utf-16,utf-32。 Utf-8是一种针对Unicode的可变长度字符编码规则,又称万国码,用1到4个字节编码Unicode字符。其编码规则为: 1、对于单字节的符号,字节的第一位设为0,后面7位为这个符号的unicode码。因此对于英语字母,UTF-8编码和ASCII码是相同的。 2、对于n字节的符号(n>1),第一个字节的前n位都设为1,第n+1位设为0,后面字节的前两位一律设为10。剩下的没有提及的二进制位,全部为这个符号的unicode码。 Unicode符号范围 | UTF-8编码方式 UTF字节数 (十六进制) | (二进制) 一个字节 0000 0000-0000 007F | 0xxxxxxx 两个字节 0000 0080-0000 07FF | 110xxxxx 10xxxxxx 三个字节 0000 0800-0000 FFFF | 1110xxxx 10xxxxxx 10xxxxxx 四个字节 0001 0000-0010 FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx Utf-8编码巧妙地运用开头n位字符表示出是由几个字节组成的编码,0开头的是一个字节编码,11开头的是2个字节编码,111开头是三个字节编码,1111开头是四个字节编码。 utf-16固定用两个字节来表示一个编码。 utf-32固定用四个字节来表示一个编码。 由于这两种编码在报表里比较少使用,这里就不多说明了。 三、 中文字符集 主要是GB2312、GBK、GB18030字符集,字符集的名称同时也是编码的名称。 1、GB2312 GB2312是我国对ASCll码的扩展,占用两个字节。GB2312编码是第一个汉字编码国家标准,共收录汉字6763个,其中一级汉字3755个,二级汉字3008个。同时,GB2312编码收录了包括拉丁字母、希腊字母、日文平假名及片假名字母、俄语西里尔字母在内的682个全角字符。 2、GBK GBK是对GB1212的扩展,GBK 包括了 GB2312 的所有内容,同时又增加了近20000个新的汉字(包括繁体字)和符号。 3、GB18030 GB18030采用变长编码,可以是1个字节、2个字节和4个字节。是对GB2312和GBK的扩展,完全兼容两者。 在皕杰报表中如果遇到有的汉字显示不了,并不是报表的问题,一定是你使用的编码中汉字不全造成的。换一个汉字比较全的编码即可,采用utf-8或GB18030基本可以解决中文不全问题。

点赞
收藏
评论区
推荐文章
Wesley13 Wesley13
3年前
java 字符编码
1.字符集编码<br/    JDK1.6APi中提供的字符串构造方法有指定编码字符集和系统默认编码字符集两类。对于指定编码字符集来说,很好理解。默认编码字符集中描述如下:    ConstructsanewStringbydecodingthespecifiedarrayofbytesusingtheplatform's
Stella981 Stella981
3年前
CentOS7设置中文字符集
一、字符编码和字符集1、字符编码(characterencoding):字符编码是一种法则,在数字与符号之间建立的对应关系。不同的国家有不同的语言,包含的文字、标点符号、图形符号各有不同。例如在ASCII编码中,用数字97表达字符'a'与字符集相对应,常见的字符编码有AS
Wesley13 Wesley13
3年前
4项技巧使你不再为PHP中文编码苦恼
PHP程序设计中中文编码问题曾经困扰很多人,导致这个问题的原因其实很简单,每个国家(或区域)都规定了计算机信息交换用的字符编码集,如美国的扩展ASCII码,中国的GB231280,日本的JIS等。作为该国家/区域内信息处理的基础,字符编码集起着统一编码的重要作用。字符编码集按长度分为SBCS(单字节字符集),DBCS(双字节字符集)两大类。早期
Wesley13 Wesley13
3年前
MySQL字符集小结
一:什么是字符集字符集支持多层面:服务器层(server)、数据库层(database)、数据表(table)、字段(column)、连接(connect)、结果集(result)。1.字符集是一套符号和编码规则,字符串必须有相应的字符集。2.校验集是这套符号和编码的校验规则,定义字符排序规则,字符串之间比较的规则。3.非ASCII字
Wesley13 Wesley13
3年前
JS转码与解码
escape和unescapeescape()不能直接用于URL编码,它的真正作用是返回一个字符的Unicode编码值。采用unicode字符集对指定的字符串除0255以外进行编码。所有的空格符、标点符号、特殊字符以及更多有联系非ASCII字符都将被转化成%xx格式的字符编码(xx等于该字符在字符集表
Wesley13 Wesley13
3年前
mysql 修改字符集为utf8mb4
一般情况下,我们会设置MySQL默认的字符编码为utf8,但是近些年来,emoji表情的火爆使用,给数据库带来了意外的错误,就是emoji的字符集已经超出了utf8的编码范畴😄令人抓狂的字符编码问题谈到字符编码问题,会让很多人感到头疼,这里不在深究各个字符编码的特点和理论,这里只说下Unicode和utf8字符编码的关系
Wesley13 Wesley13
3年前
JAVA NIO 字符集编码问题
字符集是非英语国家人最头疼的事情,尤其是样样有国标的中国。所以本朝的码农比洋大人程序员学各种技能都要多会一个技能点——应付编码问题。NIO我们同样需要面对编码解码问题。六、字符集:CharSet编码:字符串字节数组解码:字节数组字符串有哪些编码呢?@Testp
Wesley13 Wesley13
3年前
Mysql 字符编码
知识补充:数据库字符编码一、MySQL支持的字符集1.查看所有可用的字符集showcharacterset;或者查看information\_schema.character\_sets,也可以显示所有的字符集和该字符集默认的校队规则2.MySQL的字符集包括字符集(character)和校对规则(collation
Wesley13 Wesley13
3年前
MySQL原理
任何计算机存储数据,都需要字符集,因为计算机存储的数据其实都是二进制编码,将一个个字符,映射到对应的二进制编码的这个映射就是字符编码(字符集)。这些字符如何排序呢?决定字符排序的规则就是排序规则。查看内置字符集与比较规则通过showcharset;命令,可以查看所有的字符集。以下仅展示了我们常用的字符
Wesley13 Wesley13
3年前
MySQL 的字符集与排序规则
今天突然被同事问到,MySql里的uft8与utf8mb4究竟有什么区别,当时我也是一脸问号,因此特地去了解了一下。字符集uft8与utf8mb4其实指的是MySQL中的字符集,那到底什么是字符集呢?概念很多人常常会把字符、字符集、字符编码的概念混为一谈,今天我们仔细来看看。