python输出unicode
Ⅰ python3.6从网页源码中抓取的unicode无法输出中文
importrequests
frombs4importBeautifulSoup
importchardet
defget_charset(byte_str):
charset=chardet.detect(byte_str)['encoding']
returncharset
r=requests.get('http://xiaorui.cc/2016/02/19/代码分析python-requests库中文编码问题/')
r.encoding=get_charset(r.content)
soup=BeautifulSoup(r.text,'lxml')
soup.text
乱码的原因主要是网页的字符集和你输出的字符集不一致造成的,让你的输出和采集到的字符集保持一致就可以了
我这里用requests
urllib库也是一样的
Ⅱ python unicode麻烦帮我按句解释下,unicode()函数作用到底是什么
UNICODE函数wei 预先编写的公式,可以对一个或多个值执行运算,并返回一个或多个值。函数可以简化和缩短工作表中的公式,尤其在用公式执行很长或复杂的计算时的公式语法和用法。如果文本包含部分代理项或数据类型无效,则UNICODE返回错误值#VALUE!。
Unicode通常用两个字节表示一个字符,原有的英文编码从单字节变成双字节,只需要把高字节全部填为0就可以。
因为Python的诞生比Unicode标准发布的时间还要早,所以最早的Python只支持ASCII编码,普通的字符串ABC在Python内部都是ASCII编码的。
(2)python输出unicode扩展阅读
Unicode为了解决传统的字符编码方案的局限而产生的,例如ISO 8859所定义的字符虽然在不同的国家中广泛地使用,可是在不同国家间却经常出现不兼容的情况。
很多传统的编码方式都有一个共同的问题,即容许电脑处理双语环境(通常使用拉丁字母以及其本地语言),但却无法同时支持多语言环境(指可同时处理多种语言混合的情况)。
Unicode编码包含了不同写法的字,如“ɑ/a”、“户/户/戸”。然而在汉字方面引起了一字多形的认定争议。
Ⅲ python2.7 print 输出unicode到文件
importcodecs
aaa=u'u66fe'
unicode_file=codecs.open('out.txt','w','utf-16')
unicode_file.write(aaa)
unicode_file.close()
代码很简单
Ⅳ python中如何打印或保存unicode编码内容成中文
使用decode(“unicode-escape”)
例如:
string="u73bbu7483"
printstring.decode("unicode-escape")
Ⅳ 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输出到文件乱码如何解决
python代码文件的编码
py文件默认是ASCII编码,中文在显示时会做一个ASCII到系统默认编码的转换,这时就会出错:SyntaxError: Non-ASCII character。需要在代码文件的第一行或第二行添加编码指示:
1 # coding=utf-8 ##以utf-8编码储存中文字符
2 print '中文'
像上面那样直接输入的字符串是按照代码文件的编码来处理的,如果用unicode编码,有以下三种方式:
1 s1 = u'中文' #u表示用unicode编码方式储存信息
2 s2 = unicode('中文','gbk')
unicode是一个内置函数,第二个参数指示源字符串的编码格式。
decode是任何字符串具有的方法,将字符串转换成unicode格式,参数指示源字符串的编码格式。
encode也是任何字符串具有的方法,将字符串转换成参数指定的格式。
(2)、字符串的编码
用 u'汉字' 构造出来的是unicode类型,不用的话构造出来是str类型
str的编码是与系统环境相关的,一般就是sys.getfilesystemencoding()得到的值
所以从unicode转str,要用encode方法
从str转unicode,所以要用decode
例如:
# coding=utf-8 #默认编码格式为utf-8
s = u'中文' #unicode编码的文字
print s.encode('utf-8') #转换成utf-8格式输出
但当python中间处理非ASCII编码时,经常会出现如下错误:
UnicodeDecodeError: 'ascii' codec can't decode byte 0x?? in position 1: ordinal not in range(128)
0x??是超出128的数字,python在默认的情况下认为语言的编码是ascii编码,所以无法处理其他编码,需要设置python的默认编码为所需要的编码。
一个解决的方案是在代码中添加:
import sys
reload(sys)
sys.setdefaultencoding('utf-8') (其中utf-8为你想输出的字符编码)
解释:
sys.setdefaultencoding方法在python导入site.py后就删除了(具体代码查看site.py就可以看到)因此如果想用的话可以再重新load进入
总结:
u=u'unicode编码文字'
g=u.encode('gbk') #转换为gbk格式
print g #此时为乱码,因为当前环境为utf-8,gbk编码文字为乱码
str=g.decode('gbk').encode('utf-8') #以gbk编码格式读取g(因为他就是gbk编码的,需要事先知道它是GBK编码)并转换为utf-8格式输出
print str #正常显示中文(同文件输出)
安全的方法:
s.decode('gbk','ignore').encode('utf-8′) #以gbk编码读取(当然是读取gbk编码格式的文字了)并忽略错误的编码,转换成utf-8编码输出。
推荐学习《Python教程》!
Ⅶ python将一个字符串打印成unicode的格式到文本中
content = u'中华人民共和国'
file.write(prep(content).replace('u', '').replace('\'', ''))
Ⅷ python 怎么把字符转换为unicode编码
实现代码如下:
a
=
'abce'#
print
type(a)b
=
a.decode("ascii")#
print
type(b)c
=
a.decode("ascii").encode("utf-8")#
print
type(c)
在python中进行编码转换都是通过unicode作为中间值实现的。所以要先decode成unicode字符,然后再使用encode转换成utf-8编码的str。可以把注释取消了,看下转换过程中的类型。
Ⅸ python unicode编码
python unicode编码:
下面的代码创建了一个Unicode字符串,用UTF-8编码器将它编码,然后写入到一个文件中去,接着把数据从文件中读回来,解码成Unicode字符串对象,最后,打印出Unicode字符串,用以确认程序正确地运行。
在Linux中编写,在VIM中输入如下代码,保存为uniFile.py
#/home/xiaopeng/python/code/uniFile.py
'''
:Writes
aUnicodestringtoafileinutf-8andreadsitbackin
'''
CODEC='utf-8'编码方式
FILE='unicode.txt'要存的文件名
hello_out=u"Helloworld "创建了一个Unicode格式的字符串
bytes_out=hello_out.encode(CODEC)用UTF-8编码
f=open(FILE,'w')
f.write(bytes_out)写入指定文件中
f.close()
f=open(FILE,'r')
bytes_in=f.read()读取
f.close()
hello_in=bytes_in.decode(CODEC)解码
printhello_in打印
在终端中输入:python uniFile.py
结果打印出 Hello world
然后在python目录下会发现多了一个名为unicode.txt的文件,用cat命令查看一下,发现里面的内容和打印的结果一样.
把Unicode应用到实际中注意一下四点:
1程序中出现字符串时一定要加一个前缀u
2不要用str()函数,用Unicode()代替
3 不要用过时的string模块。如果传给它非ASCII码,它会把一切搞砸。
4 不到必须时不要在你的程序里编解码Unicode字符,只在你要写入文件或者数据库或者网络时,才调用encode()函数和decode()函数。