相关文章推荐

基础知识部分
首先需明白python2.7默认使用的是ascii,而现在python3.x默认使用的是unicode。下面内容基于python2.7。
python2编码总结
解决python的中文字符编码问题
Python2同时输出中文和变量时中文乱码

一、文件编码

一般文件使用的是utf-8或者bgk编码进行存储。但是由于python2.7默认使用ascii,所以python2.7在运行py后缀文件时也是默认以ascii编码读取文件。如果文件中没有中文不会出现问题。但是如果有中文的话,由于中文编码超出了ascii编码范围,所以python2.7将会报错。
所以我们需要在文件头部添加:

#coding:utf-8
#!/usr/bin/python
# -*- coding: utf-8 -*-

来告诉python2.7此文件要用utf-8编码来读取。

  在文件中设置后我们可以使用 a = u'哈';python会自动使用utf-8来读取汉字,并将其转换为Unicode对象。

二、字符串编码

python2.7和字符串相关的数据类型,分别是标准字符串(str)是单字节字符序列,Unicode字符串(unicode)是双字节字符序列。。
  python的解码,编码是python自动进行的,如果我们没有指明解码方式,python 就会使用 sys.defaultencoding 指明的方式来解码。python2.7的函数str()和unicode()默认将对象转成ascii编码。
  但是对于中文,ascii编码是无法表示的。因此我们需要用sys.setdefaultencoding(‘utf-8’)来设置string对象默认的编码。

import sys
reload(sys)
sys.setdefaultencoding('utf-8') 

那么字符串如何在str和unicode间进行转换呢?python提供了两个函数:

 b = u'哈'     //b为unicode对象
 b.encode('utf-8')     //将b从unicode类型转为utf-8类型
 b.decode('utf-8')     //将b从utf-8类型转换为Unicode类型

三、window控制台输出

window控制台默认使用gbk编码。如果你设置了

# -*- coding: utf-8 -*-

python直接按照utf-8输出到控制台。所以我们可以改变文件编码:

# -*- coding: gbk -*-

或者使用unicode类型进行输出,会自动转换。

基础知识部分 首先需明白python2.7默认使用的是ascii,而现在python3.x默认使用的是unicode。下面内容基于python2.7。一、文件编码  一般文件使用的是utf-8或者bgk编码进行存储。但是由于python2.7默认使用ascii,所以python2.7在运行py后缀文件时也是默认以ascii编码读取文件。如果文件中没有中文不会出现问题。但是如果有中文的话,由于中文编 1.mysql数据库各项没有设置编码,默认为’latin’ 2.使用MySQL.connect的时候没有设置默认编码 3.没有设置python编码,python2.7默认为’ascii’ 4.没有解码 解决方法: 1.设置mysql的编码 ubuntu执行下列语句: ** sudo vim /etc/mysql/my.cnf ** 然后在里面插入语句: [client] default-character-set=utf8 [mysqld] character-set-s
Python 3的字符串str类型用Unicode,直接支持多语言。 当str和bytes互相转换时,需要指定编码。最常用的编码UTF-8Python当然也支持其他编码方式,比如把Unicode编码成GB2312: >>> '中文'.encode('gb2312') b'\xd6\xd0\xce\xc4' 8 bite= 1 字节 因为计算机只能处理数字,如...
为什么会报错“UnicodeEncodeError: ‘ascii’ codec can’t encode characters in position 0-1: ordinal not in range(128)”?本文就来研究一下这个问题。 字符串在Python内部的表示是unicode编码,因此,在做编码转换时,通常需要以unicode作为中间编码,即先将其他编码的字符串解码(decode)成unicode,再从unicode编码(encode)成另一种编码。  decode的作用是将其他编码的字符串转换成unicode编码,如str1.decode(‘gb2312’),表示将gb231
最近由于项目需要,需要读取一个含有中文的txt文档,完了还要保存文件。文档之前是由base64编码,导致所有汉字读取显示乱码。项目组把base64废弃之后,先后出现两个错误: ascii codec can't encode characters in position ordinal not in range 128 UnicodeDecodeError: ‘utf8' codec can't decode byte 0x。 如果对于asciiunicodeutf-8还不了解的小伙伴,可以看之前的这篇文章关于字符串和编码 那么必须对下面这三个概念有所了解: ascii只能表示 encode英文原意 编码 可使用encode(‘raw_unicode_escape’)将此str转化为bytes, 再decode为str 可使用decode(‘raw_unicode_escape’)输出内容为bytes形式的字符串 raw_unicode_escape 这个应该生成 unicode编码unicode-escape编码集,他是将unicode内存编码值直接存储 <button class="sure">ç¡®å
当我们使用python向文件写入中文时,有时中文还是会乱码, 使用with open写入中文文本的代码如下: open('grs_new2.json','w+',encoding = 'utf-8') as file2: file2.write(json.dumps(line)+"\n") 写入后的文本是这种: 像文中这种“\u51fa\u751f\u5730”其实是汉字对应的ASCII编码,比如上述的“\u51fa\u751f\u5730”对应的汉字就是“出生地”,这个很容易通过在线的Unicode
1.基本概念 (1)字符和字节是两个不同的术语,在unicode中一个字符就是两个字节,如’人’一个字符占两个字节。对于python中len()函数,len(u’中国’)和len(‘hi’)一样长度值都为2,这里长度是指字符长度 (2)ASCII码跟Unicode没有本质的区别。只不过Unicode表示范围比ASCII大 (3)在简体中文Windows操作系统中,ANSI 编码代表 GBK ...
Unicode也叫万国码、单一码,是计算机科学领域里的一项业界标准,包括字符集、编码方案等。对于世界上所有的语言文字再unicode中都可以查看到。【汉】字的编码解释官网https://www.unicode.org/cgi-bin/GetUnihanData.pl?codepoint=6C49 unicode编码就是为了统一世界上的编码,有一个统一的规范。但是它还存在一些问题Unicode问题 需要注意的是,Unicode只是一个符号集,它只规定了符号的二进制代码,却没有规定这个二进制代码应该如何存
#coding=utf-8 1.1、ascii,用1个字节表示。 1.2、UTF-8,用1个至三个字节表示,表示ascii码时只占用1个字节,ascii编码UTF-8的子集。 最早出现的“密码本”美国人发明叫做ASCIIascii只能表示数字、英文字母和一些特殊符号,不能表示汉字 unicode # 将转换后的内容写入新的文件中 with open('utf8.txt', 'w', encoding='utf-8') as f: f.write(utf8_content.decode('utf-8')) 注意:在使用encode()函数将ANSI编码转换为UTF-8编码时,需要先将文件内容解码为Unicode字符串,然后再进行编码。在将转换后的内容写入新的文件中时,需要将Unicode字符串再次编码UTF-8编码。 ### 回答2: ANSI编码UTF-8编码是两种不同的字符编码方式,其中ANSI编码是在Windows下常用的字符编码方式,而UTF-8编码是一种通用的字符编码方式。因此,如果需要将ANSI编码转为UTF-8编码,可以通过以下步骤实现。 首先,需要使用Python中的open()函数打开待转换的ANSI编码文件,并指定字符编码为ANSI,例如: with open('file.txt', 'r', encoding='ANSI') as f: content = f.read() 接着,可以将读取的文件内容使用encode()方法进行UTF-8编码,例如: utf8_content = content.encode('utf-8') 最后,将转换后的内容写入到新文件中,例如: with open('new_file.txt', 'w', encoding='utf-8') as f: f.write(utf8_content.decode('utf-8')) 需要注意的是,在将ANSI编码转换为UTF-8编码时,需要确保两种编码方式的字符集是一致的,否则可能会导致转换失败或出现乱码的情况。此外,在使用encode()和decode()方法时,需要指定相应的字符编码方式,否则也可能会产生编码错误或乱码问题。 通过以上操作,就可以将ANSI编码转换为UTF-8编码了。这一过程并不难,但需要特别注意编码方式是否正确。 ### 回答3: Python中有许多方法可以将ANSI编码转换为UTF-8编码。ANSI编码通常是指Windows默认的编码格式,而UTF-8编码则是一种常用的Unicode编码格式。 以下是一些将ANSI编码转换为UTF-8编码的方法: 1. 使用Python内置的编码方法 使用Python内置的encode()方法可以将ANSI编码转换为UTF-8编码。示例代码如下: ```python ansi_text = '你好,世界!' utf8_text = ansi_text.encode('utf-8') print(utf8_text) 2. 使用第三方库 Python中有许多第三方库可以用于编码转换。常用的库包括chardet、iconv、iconv-lite等。 ```python import chardet ansi_text = '你好,世界!' encoding = chardet.detect(ansi_text)['encoding'] utf8_text = ansi_text.encode(encoding).decode('utf-8') print(utf8_text) 3. 使用操作系统的命令行工具 在Windows下,可以使用命令行工具iconv来进行编码转换。先安装iconv,并将路径添加到环境变量,然后使用以下命令进行转换: ```python import os ansi_text = '你好,世界!' utf8_text = os.popen(f'iconv -f GBK -t UTF-8 <<< {ansi_text}').read().strip() print(utf8_text) 总之,无论使用Python内置的方法还是第三方库或者操作系统的命令行工具,转换ANSI编码UTF-8编码是十分简单的。
 
推荐文章