编码问题

mogujiang 2021-09-05 原文

参考的文章有:

https://my.oschina.net/gooke/blog/354300


 

 

1字节 = 8比特    1Byte = 8bit

计算机处理数据的最小单位是位    位用0,1数字表示

最小表示方式是字节

一个字节有8位,所以有2的8次方种可能,最大是(十进制:256)(二进制:11111111)

一个字节放入1个ASCII码,二个字节放入1个汉字


 

ASCII编码:只能表示大小写字母,数字,一些符号

        ASCII码是7位编码,ASCII字符集包括英文字母、阿拉伯数字和标点符号等字符。专门给英语国家设计的编码。

GB2312编码:中文字符集,只收录了6763个常用汉字,字符集中除常用简体汉字字符外还包括希腊字母、日文等字符,未收录繁体中文汉字和一些生僻字。

GBK:GBK编码是GB2312编码的超集,共收录了21003个汉字,向下完全兼容GB2312。

ISO8859-1又称Latin-1或“西欧语言”。它以ASCII为基础,在空置的0xA0-0xFF的范围内,加入96个字母及符号,藉以供使用变音符号的拉丁字母语言使用。

Unicode :又称万国码,顾名思义,unicode中收录了世界各国语言,用以解决传统编码的局限性。它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。通常是2个字节表示一个字符

UTF-8:(8-bit Unicode Transformation Format)是一种针对Unicode的可变长度字符编码。

有2点:

1、不同编码,字符所占的字节不一样。ascii占一个字节,gb2312、gbk、unicode用2个字节表示一个字符,utf-8是可变长的,英文用1个字节,汉子用3个字节。

2、同一个字符在不同的编码表中位置不同,所以编码解码要用同一个编码方式。比如汉字‘中’在GBK中是D6D0,而在unicode中是4E2D。

 

java默认使用的unicode编码,所有字符在JVM(内存中)只有一个存在形式就是unicode。所以一个char占用2个字节。

 

程序里输入“汉字”:

1.java会以默认的unicode对“汉字”进行编码,占用4个字节存储在内存中

汉字

(6c49)(5b57)

2、当要写入文件时,按程序指定的utf-8编码对“汉字”重新编码,存储在utf.txt文件中。

(e6b189)(e5ad97)

3、如果用GDK解码,就乱码了

姹戈瓦…

(e6b189)(e5ad97)

 

 


 如何相互转化:

http://cache.baiducontent.com/c?m=9f65cb4a8c8507ed4fece763105392230e54f73260878e482a958448e435061e5a33b4ec7e715052ce963c365bf40d0bf7f03471371e23b586ca8e579ff0d47272d43034065dc001498f4cb8cb30729d76c70bfeaf6ebdfcaf6c87eb8f93895b008c154521d0b7cd0d1715ba38b0546ca3b19838025e63aded4172ff286028ef6206f650f991256e7696f7ad011c9b7d81270697de6fe37f05b562f8420c2435f30af7480a7677a61830ff352a04e3fc5c977c2e117ee01f&p=8b2a9703bad857ff57ed977d7f5280&newp=83769a4799d011a058ee973a134098231610db2151d6d301298ffe0cc4241a1a1a3aecbf2729150fd9c67e6503af495de0f33377370834f1f689df08d2ecce7e609b&user=baidu&fm=sc&query=AttributeError%3A+%27str%27+object+has+no+attribute+%27decode%27&qid=deb0de5000024fae&p1=22

 


 

参考资料:

http://cache.baiducontent.com/c?m=9f65cb4a8c8507ed4fece763105392230e54f73d67848d5f3883c71fcf314c413037bee43a674b5d88d87e6502ae4c5aeff13c71370422bc9c99834ddaea917f2bde2d64201a8d4011d919acc9477192719b5aecad1ce3baa33091accfd1dd5752c0570f798bf3805e001ecb68fa1062e2a39d481e5516bceb3761ae0a727e987045e214aaeb626501d6a1d75e4ec13e953c51c1a077fb7848e84fb31f6a3332a55bc70c465635f73b57e8454d13e2ed4a945d6e4052a139b6aeb1b4fc3e89cb9a42&p=80578b15d9c342ab40aac62d021498&newp=83759a45d5c70efc57efc02450059c231610db2151d3d401298ffe0cc4241a1a1a3aecbf27291407d4c67c610aab4d58ecf63572340634f1f689df08d2ecce7e60&user=baidu&fm=sc&query=python+%D7%D6%B7%FB%B4%AE+%C7%B0%D7%BA&qid=8ad00d610000accc&p1=2


解决python3 UnicodeEncodeError: \’gbk\’ codec can\’t encode character \’\xXX\’ in position XX

http://blog.csdn.net/jim7424994/article/details/22675759

 

发表于
2016-06-24 16:00 
蘑菇の甜酱 
阅读(392
评论(0
编辑 
收藏 
举报

 

版权声明:本文为mogujiang原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/mogujiang/p/5614440.html

编码问题的更多相关文章

随机推荐

  1. win7上手机ADB interface无法安装驱动

    解决办法: https://blog.csdn.net/riyuexingchen1204/article/d […]...

  2. 微录音–Android通话录音(vluyin-callrecorder)一款安卓通话录音软件

    通话录音软件—微录音(V-Callrecorder) 一、你是否常常遇到以下情况:1.会议现场,经 […]...

  3. 海量数据处理方法整理记录

      随着现在数据量的不断增加,很多大数量的问题随之而来,就得需要我们想办法解决,我找了一些问题并首先思考,然后 […]...

  4. 彻底删除MySQL

    1、控制面板->>程序与功能里卸载所有和MySQL有关的组件。 2、MySQL安装路径里删除和My […]...

  5. Docker简介与安装

    Docker简介与安装 Docker简介;Docker与虚拟机区别;Docker的优点及内部组件说明;如何安装 […]...

  6. SpringBoot2 集成测试组件,七种测试手段对比

    自测是于开发而言,提测是对专业的测试人员而言,如果尽可能在自测阶段就发现问题,并解决问题,那么一个问题就不会影 […]...

  7. TCP/IP详解之:TCP

    第17章 TCP:传输控制协议 TCP提供了一种可靠的面向连接的字节流运输层服务 TCP的服务 尽管TCP和U […]...

  8. Redis-Redis基本类型及使用Java操作

    1 Redis简介     Redis(REmote Dictionary Server)是一个使用ANSI […]...