Python - 编码问题

Mitchell

Python 编码问题

  • 以下是关于 python 编码规则的一些介绍:
    • Python 内部所有编码统一是 Unicode,unicode 是一种中转码;
    • 中文是 gbk 格式;
    • 正常输出为 utf-8 格式。
  • 当出现乱码的情况时,我们需要通过一系列的转码
过程表述:
原文件编码格式 --> unicode 中转码 --> 转为我们需要的编码格式。
代码实现:
decode() --> unicode --> encode()转换为我们需要的编码格式。  
  • Exp:
    • 用 Python 读取 file.txt 中文文档;
f = open('filePath','r')  
content = f.read()  
print content.decode('gbk').encode('utf-8')  
  • 判断是否是 Unicode,自动处理编码
if isinstance(content, unicode):  
   print content.encode('utf-8')
else:  
   print content.decode('gbk').encode('utf-8')
  • 有时在获取网页内容时候,可能会遇到由于网站内容也是爬取到的,有的网站的编码格式不统一,造成可能有些位置出现乱码的解决方式:
web=urllib.urlopen(url)  
content = web.read().decode('gbk','ignore').encode('utf-8')  
  • 为什么不统一都使用 unicode 编码格式? 从技术方面来解释是为了节省硬盘和流量。
  • 编码问题可能带来的影响
    • 假如公司网站是面向国际的,这时如果使用的编码格式是 gbk,会被搜索引擎认为是中文网站,当在搜索引擎投放广告时,在中国 ip 进行搜索时排名可能会靠前,当其他外文国家在搜索时,因为会有根据语言来显示的策略,这个时候编码格式可能会影响其排名。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏葡萄城控件技术团队

C# 8.0的三个值得关注的新特性

image.png C# 语言是在2000发布的,至今已正式发布了7个版本,每个版本都包含了许多令人兴奋的新特性和功能更新。同时,C# 每个版本的发布都与同...

27180
来自专栏编程

设计模式启示录(二)

设计模式启示录(二) 在【设计模式启示录 (一)】中,重点介绍了设计模式的精髓(抽象),设计模式的分类(按抽象的目的进行分类)。在本篇中,将按照前述的七大分类,...

18470
来自专栏ThoughtWorks

TW洞见〡getter和setter的那些事

文章作者来自ThoughtWorks:佟达 相信每一个以Java或者C++作为编程入门语言的程序员,一定会记得一条金科玉律:字段(Filed)要声明成priv...

31460
来自专栏大史住在大前端

javascript基础修炼(7)——Promise,异步,可靠性

Promise技术是【javascript异步编程】这个话题中非常重要的,它一度让我感到熟悉又陌生,我熟悉其所有的API并能够在编程中相对熟练地运用,却对其中原...

11850
来自专栏文渊之博

Python 代码风格

1 原则 在开始讨论Python社区所采用的具体标准或是由其他人推荐的建议之前,考虑一些总体原则非常重要。 请记住可读性标准的目标是提升可读性。这些规则存在的目...

30890
来自专栏python学习路

一、代码风格 1、假定你的代码需要维护2、保持一致性3、考虑对象在程序中存在的方式,尤其是那些带有数据的对象4、不要做重复工作5、让注释讲故事6、奥卡姆剃刀原则1、简洁的规则2、文档字符串3、空行4、

刚开始学的时候就要注意编码规范了,所以整理了一下,以便养成一个编码好习惯。不然以后真的不好改。 代码被读的次数远大于被写的次数。 作为一名程序员(使用任何语言)...

24750
来自专栏大内老A

WCF技术剖析之二十二: 深入剖析WCF底层异常处理框架实现原理[上篇]

对于上一篇文章 (WCF基本异常处理模式:[上篇]、[中篇]、[下篇]),主要是站在最终开发者的角度对WCF关于异常处理编程模式进行了介绍,接下来,我们需要将我...

20990
来自专栏C/C++基础

C++异常处理的开销

C++异常是C++有别于C的一大特性 ,异常处理机制给开发人员处理程序中可能出现的意外错误带来了极大的方便,但为了实现异常,编译器会引入额外的数据结构与处理机制...

10120
来自专栏C/C++基础

C++为什么要引入异常处理机制

在程序设计中,错误时不可避免的。及时有效的发现错误,并作出适当的处理,无论是在软件的开发阶段还是在维护阶段都是至关重要的。错误修复技术是提高代码健壮性的最有效的...

10610
来自专栏王清培的专栏

Redis 数据结构与内存管理策略(上)

Redis 数据结构与内存管理策略(上) 标签: Redis Redis数据结构 Redis内存管理策略 Redis数据类型 Redis类型映射 作者:王清培(...

34270

扫码关注云+社区

领取腾讯云代金券