导航:首页 > 编程语言 > 汉字转unicode编码python

汉字转unicode编码python

发布时间:2023-03-01 08:28:44

‘壹’ python 编码转换与中文处理

python 中的 unicode 是让人很困惑、比较难以理解的问题. 这篇文章 写的比较好, utf-8是 unicode的一种实现方式,unicode、gbk、gb2312是编码字符集.

Python 默认脚本文件都是 ANSCII 编码的,当文件 中有非 ANSCII 编码范围内的字符的时候就要使用" 编码指示 "来修正一个 mole 的定义中,如果.py文件中包含中文字符(严格的说是含有非anscii字符),则需要在第一行或第二行指定编码声明: # -*- coding=utf-8 -*- 或者 #coding=utf-8
其他的编码如:gbk、gb2312也可以;否则会出现:

先说一下python中的字符串类型,在python中有两种字符串类型,分别是 str 和 unicode ,他们都是basestring的派生类;

在str的文档中有这样的一句话:

也就是说在读取一个文件的内容,或者从网络上读取到内容时,保持的对象为str类型;如果想把一个str转换成特定编码类型,需要把str转为Unicode,然后从unicode转为特定的编码类型如:utf-8、gb2312等。

unicode 转为 gb2312,utf-8等,使用 encode(encoding)

utf-8,GBK转换为 unicode 使用 unicode(s,encoding) 或者 s.decode(encoding)

普通的 str 转为 unicode,

如果直接执行s.encode('gb2312')会发生什么?

这里会发生一个异常:Python 会自动的先将 s 解码为 unicode ,然后再编码成 gb2312。因为解码是python自动进行的,我们没有指明解码方式,python 就会使用 sys.defaultencoding 指明的方式来解码。很多情况下 sys.defaultencoding 是 ANSCII,如果 s 不是这个类型就会出错。
拿上面的情况来说,我的 sys.defaultencoding 是 anscii,而 s 的编码方式和文件的编码方式一致,是 utf8 的,所以出错了:

对于这种情况,我们有两种方法来改正错误:

s = '中文'
s.decode('utf-8').encode('gb2312') ```

import sys
reload(sys) # Python2.5 初始化后会删除 sys.setdefaultencoding 这个方法,我们需要重新载入
sys.setdefaultencoding('utf-8')
str = '中文'
str.encode('gb2312')

print open("Test.txt").read()

import codecs
print open("Test.txt").read().decode("utf-8")

Traceback (most recent call last):
File "ChineseTest.py", line 3, in <mole>
print open("Test.txt").read().decode("utf-8")
UnicodeEncodeError: 'gbk' codec can't encode character u'ufeff' in position 0: illegal multibyte sequence

import codecs
data = open("Test.txt").read()
if data[:3] == codecs.BOM_UTF8:
data = data[3:]
print data.decode("utf-8")

s = "中文"
print unicode(s, "utf-8")

Traceback (most recent call last):
File "ChineseTest.py", line 3, in <mole>
s = unicode(s, "utf-8")
UnicodeDecodeError: 'utf8' codec can't decode bytes in position 0-1: invalid data

s = "中文"
print unicode(s, "gbk")

s = "中文"
print unicode(s, "cp936")

‘贰’ python怎么将字典的编码转换成unicode

decode的作用是将其他编码的字符串转换成unicode编码,如str1.decode('gb2312'),表示将gb2312编码的字符串转换成unicode编码。 encode的作用是将unicode编码转换成其他编码的字符串,如str2.encode('gb2312'),表示将unicode编码的字符串转换成

‘叁’ Python2.7 中文字符编码,使用Unicode时,选择什么编码格式

关于编码和乱码的问题,我简单讲一下。

通常问这类问题的人是混淆了若干个不同的概念,并且他们自己也没有意识到自己混淆了这些概念的。

‘肆’ python怎么转换unicode编码

用decode()就行。decode()方法必须传入一个参数,这个参数就是当前待转码的编码,此函数方法的用意就是将当前编码为Unicode编码。

比如就你这提问的此页面:

#使用版本是python2.
importurllib
url='https://..com/question/1499967322379602619.html?entry=qb_ihome_tag&hideOtherAnswer=true&newAnswer=1'
html=urllib.urlopen(url).read()
result=html.decode('gbk')
printresult

方法是绝对可行的

此法对字符串和文档内容的解码一样有效。

‘伍’ python 字符串格式的unicode编码转中文

 python对于Unicode编码可以使用decode进行转换成中文:

>>> str = b'\xe8\xb4\xb9\xe8\x84\x91\xe5\xad\x90'

>>> str.decode('utf-8')

'费脑子'

如果是字符串类型的Unicode编码没办法直接用decode进行转换:

>>> str ="\\xe8\\xb4\\xb9\\xe8\\x84\\x91\\xe5\\xad\\x90"

>>> str.decode('utf-8')

Traceback (most recent call last):

  File "<stdin>", line 1, in <mole>

AttributeError: 'str' object has no attribute 'decode'

处理方式:

>>> str = eval("b" + "\"" + str + "\"")

>>> str.decode('utf-8')

'费脑子'

阅读全文

与汉字转unicode编码python相关的资料

热点内容
目送pdf 浏览:359
pdf如何只读文件 浏览:477
2019基金从业教材pdf 浏览:963
mvc的编程思想 浏览:710
北京机架式服务器云空间 浏览:553
电脑装了svn服务器是什么 浏览:407
多媒体压缩和编码 浏览:878
php仿百度搜索 浏览:362
单片机做混响 浏览:101
下雨了程序员笑话 浏览:489
程序员交通卡哪家好 浏览:815
液体能压缩吗 浏览:974
程序员穿特步相亲受拒 浏览:425
我的世界命令方块获得超强装备 浏览:426
单片机专项实训知识总结 浏览:466
sublimecss压缩 浏览:131
浏览器下载的app删除了怎么找回 浏览:781
朋友圈解压文字软件 浏览:926
keil5编程32单片机 浏览:643
pdf文件截取 浏览:166