前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python3 编码问题: 怎么将Unicode转中文,以及GBK乱码ÖйúÉÙÊýÃñ×åÌØÉ«´åÕ¯

Python3 编码问题: 怎么将Unicode转中文,以及GBK乱码ÖйúÉÙÊýÃñ×åÌØÉ«´åÕ¯

作者头像
学到老
发布2019-02-14 14:20:03
4.3K0
发布2019-02-14 14:20:03
举报
原理:
代码语言:javascript
复制
如果***type(text) is bytes***,
那么text.decode('unicode_escape')
*decode对应bytes*
*decode对应bytes*

如果type(text) is str, 那么text.encode(‘latin1’).decode(‘unicode_escape’)

*encode对应str*
*encode对应str*
1. 案例:

*

代码语言:javascript
复制
#coding=utf-8
import requests,re,json,traceback
from  bs4 import  BeautifulSoup

def qiushibaike():
    content = requests.get('http://baike.baidu.com/city/api/citylemmalist?type=0&cityId=360&offset=1&limit=60').content

    soup = BeautifulSoup(content, 'html.parser')
    print(soup.prettify())  #.decode("unicode_escape")
    #目前soup.prettify()为str
    new=soup.prettify().encode('latin-1').decode('unicode_escape')
    #.dencode('latin-1').encode('latin-1').decode('unicode_escape')

    print(new)


if __name__=='__main__':
    qiushibaike()
2. 结果对比:
这里写图片描述
这里写图片描述
案例2,\xe5\x8f\xa4\xe8\xbf\xb9编码

\xe5\x8f\xa4\xe8\xbf\xb9编码处理

代码语言:javascript
复制
userInputTag=["\xe5\x8f\xa4\xe8\xbf\xb9","\xe5\xbb\xba\xe7\xad\x91"]
print(userInputTag[0].encode('latin-1').decode('utf-8'))

结果:

代码语言:javascript
复制
古迹

完成转化

出现GBK无法编译

另外爬取时,网站代码出现GBK无法编译python3,如出现如下:

代码语言:javascript
复制
<h1>ÖйúÉÙÊýÃñ×åÌØÉ«´åÕ¯[6]</h1>

示例:

代码语言:javascript
复制
#coding=utf-8
import requests
#共有6页,首页为空不为6
for i in range(6):
    if i==0:
        url='http://www.tcmap.com.cn/list/zhongguoshaoshuminzutesecunzhai.html'

    else:
        url='http://www.tcmap.com.cn/list/zhongguoshaoshuminzutesecunzhai'+str(i)+'.html'
    response=requests.get(url)
    print(type(response))
   #如需成功编译,在.TEXT下面增加#号部分 
    html=response.text   #.encode('latin-1').decode('GBK')
    print(html)
这里写图片描述
这里写图片描述
文件读写操作codecs.open

python 文件读写时用open还是codecs.open 案例:当我们需要写入到TXT中的过程中 代替这繁琐的操作就是codecs.open,例如

import codecs fw = codecs.open(‘test1.txt’,’a’,’utf-8’) fw.write(line2)

不会报错,说明写入成功。这种方法可以指定一个编码打开文件,使用这个方法打开的文件读取返回的将是unicode。写入时,如果参数 是unicode,则使用open()时指定的编码进行编码后写入;如果是str,则先根据源代码文件声明的字符编码,解码成unicode后再进行前述 操作。相对内置的open()来说,这个方法比较不容易在编码上出现问题。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017年07月27日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 原理:
  • 1. 案例:
  • 2. 结果对比:
  • 案例2,\xe5\x8f\xa4\xe8\xbf\xb9编码
  • 出现GBK无法编译
  • 文件读写操作codecs.open
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档