编码问题

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. 基于Android的闹钟的软件 – 20159214-孙楠

    基于Android的闹钟的软件 2015-12-06 23:52  20159214-孙楠  阅读(1086) […]...

  2. 2021-02:Teams开发平台更新概述 – 陈希章

    2021-02:Teams开发平台更新概述 作为2021年工作计划的一部分,我会在每月的第三个星期五发布Tea […]...

  3. 微信小程序-开发入门(一)

    微信小程序已经火了一段时间了,之前一直也在关注,就这半年的发展来看,相对原生APP大部分公司还是不愿意将主营业 […]...

  4. JS浏览器事件循环机制

    文章来自我的 github 博客,包括技术输出和学习笔记,欢迎star。 先来明白些概念性内容。 进程、线程 […]...

  5. 取消office2010默认微软拼音输入法

    取消office2010默认微软拼音输入法 2012-07-11 19:51  starlet  阅读(225 […]...

  6. 3个技巧快速入门微信文章排版

      编辑微信图文消息,我们有时会先保存在word文档中,或者是企划部给你的新闻稿,里面有不同的字体(大小)、格 […]...

  7. SpringBoot系列之集成Thymeleaf用法手册

    目录 1、模板引擎 2、Thymeleaf简介 2.1)、Thymeleaf定义 2.2)、适用模板 3、重要 […]...

  8. Hadoop高可用集群

    Hadoop高可用集群 由于一个HDFS集群由一个NameNode节点和多个DataNode节点组成,一旦Na […]...

展开目录

目录导航