gbk编码

【python测试开发栈】带你彻底搞明白python3编码原理

﹥>﹥吖頭↗ 提交于 2019-12-05 06:08:48
在之前的文章中,我们介绍过编码格式的发展史:[文章传送门-todo]。今天我们通过几个例子,来彻底搞清楚python3中的编码格式原理,这样你之后写python脚本时碰到编码问题,才能有章可循。 我们先搞清楚几个概念: 系统默认编码 :指python解释器默认的编码格式,在python文件头部没有声明其他编码格式时,python3默认的编码格式是utf-8。 本地默认编码 :操作系统默认的编码,常见的Windows的默认编码是gbk,Linux的默认编码是UTF-8。 python文件头部声明编码格式 :修改的是文件的默认编码格式,只是会影响python解释器读取python文件时的编码格式,并不会改变系统默认编码和本地默认编码。 通过python自带的库,可以查看系统默认编码和本地默认编码 Python 3.7.4 (tags/v3.7.4:e09359112e, Jul 8 2019, 20:34:20) [MSC v.1916 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> import sys >>> sys.getdefaultencoding() 'utf-8' >>> import locale >>> locale

Java 正确的做字符串编码转换

孤者浪人 提交于 2019-12-04 21:06:40
字符串的内部表示? 字符串在java中统一用unicode表示( 即utf-16 LE) , 对于 String s = "你好哦!"; 如果源码文件是GBK编码, 操作系统(windows)默认的环境编码为GBK,那么编译时, JVM将 按照GBK编码将字节数组解析成字符,然后将字符转换为unicode格式的字节数组,作为内部存储。 当打印这个字符串时,JVM 根据操作系统本地的语言环境,将unicode转换为GBK,然后操作系统将GBK格式的内容显示出来。 当源码文件是UTF-8, 我们需要通知编译器源码的格式,javac -encoding utf-8 ... , 编译时,JVM按照utf-8 解析成字符,然后转换为unicode格式的字节数组, 那么不论源码文件是什么格式,同样的字符串,最后得到的unicode字节数组是完全一致的,显示的时候,也是转成GBK来显示(跟OS环境有关) 乱码如何产生? 本质上都是由于 字符串原本的编码格式 与 读取时解析用的编码格式不一致导致的。 例如: String s = "你好哦!"; System.out.println( new String(s.getBytes(),"UTF-8")); //错误,因为getBytes()默认使用GBK编码, 而解析时使用UTF-8编码,肯定出错。 其中 getBytes() 是将unicode

java unicode转GBK

北城余情 提交于 2019-12-03 19:19:24
我们经常会遇到编码问题。Java号称国际化的语言,是因为它的class文件采用UTF-8,而JVM运行时使用UTF-16(至于为什么JVM中要采用UTF-16,我没看过 相关的资料,但我猜可能是因为JAVA里面一个字符(char)就是16位的,而UTF-16正是双字节编码),都是unicode的编码。 unicode 的目标就是能支持世界上所有的字符集,也就是说几乎所有的字符集包含的字符在unicode中都有对应的编码。在unicode中,字符与代码的映射关 系,就是unicode字符集,称为UCS(Unicode Character Set),每个unicode字符编码称为code point(代码点?)。UTF-8和UTF-16是不同的UCS编码方法,UTF就是UCS Transformation Format。; 在Java 中,String的getBytes()方法就是对特定的字符串(unicode)按照给定的字符集进行编码(encode),new String()则可以按照某个字符集将字节流转换回unicode(decode)。Java里面的每一个String都是unicode编码。 再来看页面,如果不做特殊处理,Form的提交就按照页面的ContentType设置中的字符集进行编码转换,发送到后台,后台必须利用req

window下的php命令行输出汉字乱码处理

走远了吗. 提交于 2019-12-03 13:23:24
1. 在 php 的代码中加入 header("content-type:text/html;charset=gbk"); 2. 设置命令行的字体 在命令行上右击 属性 字体 选择如下字体 点击 确定 我按照上面的流程基本解决问题,如果还有乱码的话,看看是不是编码不是 gbk 尝试 gb2312 以及其他的一些编码。 来源: https://www.cnblogs.com/ifme/p/11796805.html

解决Mac上打开txt文件乱码问题

孤者浪人 提交于 2019-12-03 07:59:32
   出处: https://www.jianshu.com/p/f55ddf1e9839   经常会在Mac上打开一个txt文件,发现里面的中文都是乱码,问题是在Windows和手机上看都完全是正常的,这就十分闹心了。网上千奇百怪的解决方案大多不能用,试错后发现一个解决方案。需要用到命令行工具iconv,语法是这样的: iconv -f encoding -t encoding sourcefile > destinationfile   比如一个典型的例子(也是大多数情况): iconv -f GB18030 -t utf-8 A.txt > B.txt   原文中是GB18030 > UTF8,不知为何会报错,改为utf-8后好用。   看看效果:   完全解决了我们的问题。又有了新的疑惑,why GB18030 > UTF8 ?   补充资料:   兼容性 GB2312:基本满足了汉字的计算机处理需要,对于人名、古汉语等方面出现的罕用字,GB 2312不能处理。 GBK:GBK 向下与 GB 2312 编码兼容,向上支持 ISO 10646.1国际标准。 GB18030 :对GB 2312-1980完全向后兼容,与GBK基本向后兼容,并支持Unicode(GB 13000)的所有码位。    发布时间 GB2312:由中国国家标准总局1980年发布

Python文件操作

匿名 (未验证) 提交于 2019-12-02 22:56:40
本文主要记录Python中的文件的常用操作 1.文件操作的流程 1)打开文件,得到文件句柄并赋值给一个变量 2)通过句柄对文件进行操作 3)操作完成,关闭文件 2.打开文件的常用模式 有以下2个示例文件: # hello_gbk.txt文件为GBK编码,hello_utf8.txt文件为utf-8编码 Somehow, it seems the love I knew was always the most destructive kind 不知为何,我经历的爱情总是最具毁灭性的的那种 Yesterday when I was young 昨日当我年少轻狂 The taste of life was sweet 生命的滋味是甜的 As rain upon my tongue 就如舌尖上的雨露 I teased at life as if it were a foolish game 我戏弄生命 视其为愚蠢的游戏 View Code 2.1.一般模式 "r"ģʽ #"r"只读模式,是默认模式,默认编码是gbk,不可写 # print(f.read(10))      # 默认读全文,可以按照指定字符数量读文件内容 # print(f.readline(10))    # 默认读取一行,遇到\r或者\n为止,适合读小文件,也可以按照指定字符数量读文件内容 # print(f

python的编码和解码

匿名 (未验证) 提交于 2019-12-02 22:56:40
编码介绍: 1. ASCII: 英文, 特殊字符, 数字, 8bit, 1byte 2. GBK: 中文 16bit, 2byte. 兼容ASCII 3. unicode: 万国码, 32bit 4byte. 兼容ASCII 4. UTF-8: 长度可变的unicode. 英文:8bit, 欧洲:16bit, 中文:24bit 3byte python2 只能用ASCII python3 有unicode, 默认的编码就是unicode 内存里用的是unicode. 硬盘和网络传输用的是utf-8或者GBK python3的encode()和decode() 在python3的内存中. 在程序运行阶段. 使?用的是unicode编码. 因为unicode是万国码. 什么内容都可以进行显示. 那么在数据传输和存储的时候由于unicode比较浪费空间和资源. 需要把unicode转存成UTF-8或者GBK进行存储. 怎么转换呢. 在python中可以把?字信息进行编码. 编码之后的内容就可以进行传输了. 编码之后的数据是bytes类型的数据.其实啊.还是原来的数据只是经过编码之后表现形式发生了改变而已. bytes 的表现形式 1.英文 b‘nihao‘英文的表现形式和字符串没什么两样 2.中文 b‘\xc4\xe3\xba\xc3‘这是一个汉子‘你好’的utf-8的bytes表现形式

公司Python大佬总结给新人的编码原理,看完彻底明白Python编码原理

匿名 (未验证) 提交于 2019-12-02 22:11:45
关于编码的历史演变,utf-8是如何一步步发展来的,windows为啥依旧保持gbk的编码。。。 等等这些问题,网上一搜一大堆,大部分都是转发、分享后的雷同内容,依旧解决不了我内心的疑惑。。。 编码是个蛋疼的事情,倘若不弄清楚, 怎么在中国混? 经过自己查阅多方文档、多次深入实验,我树立了对编码的基本世界观。 基础内容请自行谷歌..废话不多说,直接上干货!! 下面用几个简单的代码段, 一步步讲解编码中“编”和“解”的问题!!(linux中运行) “ 代码 一 ”: 1 import sys, locale 2 3 s = "小甲" 4 print(s) 5 print(type(s)) 6 print(sys.getdefaultencoding()) 7 print(locale.getdefaultlocale()) 8 9 with open("utf1","w",encoding = "utf-8") as f: 10 f.write(s) 11 with open("gbk1","w",encoding = "gbk") as f: 12 f.write(s) 13 with open("jis1","w",encoding = "shift-jis") as f: 14 f.write(s) 代码很简单,学过Python的人应该都能看懂是啥意思~~ 我们看一下运行结果: