关于编码格式的浅谈【经验】
来源:互联网 发布:淮南seo 编辑:程序博客网 时间:2024/05/16 19:52
由于工作需要,在做开发的过程中用到database数据库。当从db库中读取信息时,发现中文乱码的现象。了解后得知,db库采用的是utf-8的编码格式,而vs2010中我选择了Unicode编码格式。因此,会出现中文乱码的情况。为解决这一问题,我需要将utf-8转为Unicode。而对于编码格式间的区别,我进行了相应的学习。
1. ascii编码
最早指定的ascii编码,一共规定了128个字符编码,比如空格SPACE是32(二进制00100000),大写的字母A是65(二进制01000001)。这128个符号(包括32个不能打印出来的控制符号),只占用了一个字节的后7位,最前面的一位统一规定为0。即为,一个ascii字符对应了一个字节所能表示的一个二进制状态。
2.Unicode编码
目前,世界上存在着多种编码方式,同一个二进制数字能够被解释为不同的符号。因此,想要正确的打开一个文本文件,就必须知道它的编码格式,否则会出现乱码。而Unicode,则是一种能够将世界上所有符号纳入其中的编码方式,可以很好的解决乱码的问题。Unicode 是一个巨大的集合,现有规模可以容纳100多万个符号,每个符号的编码都不一样。
需要我们注意的是,Unicode 仅仅只是一个符号集,它只对符号的二进制代码进行了规定,却没有规定这些二进制代码应该如何存储。
比如,汉字“严”的 Unicode 是十六进制数4E25,转换成二进制数足足有15位(100111000100101),也就是说,这个符号的表示至少需要2个字节。而在表示其他更大的符号时,则可能需要3到4个字节,甚至更多。这里就存在两个严重的问题:
(1)如何才能区别 Unicode 和 ASCII ?计算机怎么知道三个字节表示一个符号,而不是分别表示三个符号呢?
(2)我们知道,英文字母只用一个字节表示就已足够,如果 Unicode 统一规定,每个符号用三个或四个字节表示,那么每个英文字母前都必然有二到三个字节为0。这对于存储来说是极大的浪费,文本文件的大小会因此大出二三倍,这是无法接受的。
它们造成的结果是:
(1)出现了 Unicode 的多种存储方式,也就是说有许多种不同的二进制格式,可以用来表示 Unicode。
(2)Unicode 在很长一段时间内无法推广,直到互联网的出现。
3.utf-8
UTF-8 为目前互联网中使用最为广泛的一种 Unicode 实现方式。其他实现方式还包括 UTF-16(字符用两个字节或四个字节表示)和 UTF-32(字符用四个字节表示),不过在互联网上基本不用。注意,这里的关系为:UTF-8 是 Unicode 的实现方式之一。UTF-8 最大的一个特点,就是它是一种可变长的编码方式。可用1~4个字节表示一个符号,根据不同的符号而变化字节长度。
总结:某一个确定的字符,对于Unicode和utf-8却具有不同的编码。因此,在某种特定的编码格式下,需要将其他编码统一为一种编码,否则,会出现乱码的现象。
- 关于编码格式的浅谈【经验】
- 关于URL编码的经验。
- 关于NSKeyedArchiver的编码格式
- 关于编码格式的总结
- 关于QT的编码格式
- 关于编码的几个小经验
- 关于自动测试的一些编码经验
- 浅谈文件编码与格式
- [转载]浅谈字符编码格式
- SMTP-关于邮件编码的格式
- 关于手游的文件编码格式
- 关于文本编码格式转换的问题
- 关于文件编码格式的一点探讨
- 关于字符编码格式
- 关于编码格式
- java的经验浅谈!
- 关于oracle数据库中汉字乱码的编码修改经验
- VS2010的编码经验
- 循环队列的基本功能实现
- 那些 22 岁毕业做程序员的“普通”人,他们 50 岁左右时的人生轨迹是怎样的?
- Centos 6.5下安装docker
- 普通成员函数和内联函数调用区别(内含函数调用过程)
- Mysql 介绍(中)
- 关于编码格式的浅谈【经验】
- 简易的组装Json工具类
- 无服务器探索之路(初级):AWS Lambda服务应用场景实践之一(九)
- SSM整合报错
- Netty启动过程分析
- 谈智慧城市:物联网无所不在的互联互通、让梦想成真
- deepmind_lab 全部软件更新-----包括git curl zip unzip----msys64.rar
- UML的9种图例解析
- dialog如何设置宽度