打算用Python解析一下网络日志文件。
必然地遇上了中文乱码的问题。
小弟以前学Java,用Python解决中文乱码的问题真不知道如何入手。
在Java下面调试通过的代码,放在Python环境下就给我闹脾气了。
费我九牛二虎之力,终于在一位Oschina大大的帮助下问题解决了。
Python编码的思路主要是:
1.字符串
2.Unicode
3.目标编码集 其中(CP936,GB2312,GBK,GB18030貌似可以互相直接转换,大部分的编码是一样的)
了解Python的系统编码的结构,先看下以下的一段代码:
import locale def p(f): print '%s.%s(): %s' % (f.__module__, f.__name__, f()) # 返回当前系统所使用的默认字符编码 p(sys.getdefaultencoding) # 返回用于转换Unicode文件名至系统文件名所使用的编码 p(sys.getfilesystemencoding) # 获取默认的区域设置并返回元祖(语言, 编码) p(locale.getdefaultlocale) # 返回用户设定的文本数据编码 # 文档提到this function only returns a guess p(locale.getpreferredencoding) # \xba\xba是'汉'的GBK编码 # mbcs是不推荐使用的编码,这里仅作测试表明为什么不应该用 print r"'\xba\xba'.decode('mbcs'):", repr('\xba\xba'.decode('mbcs')) #在笔者的Windows上的结果(区域设置为中文(简体, 中国)) #sys.getdefaultencoding(): gbk #sys.getfilesystemencoding(): mbcs #locale.getdefaultlocale(): ('zh_CN', 'cp936') #locale.getpreferredencoding(): cp936 #'\xba\xba'.decode('mbcs'): u'\u6c49'
学习Python的时候,有个repr()函数。
这个函数是用来揭示字符串的本来面目!!
同样是 “你好”
utf-8的格式是 \\xc4\\xe3\\xba\\xc3
GBK格式是 u'\\u4f60\\u597d
当你不了解你的字符编码的格式,可以用repr函数打开它来看一下。
在编码转换的过程中,经常会有字节丢失,导致转换编码过程失败。
所以,我们会在编码转换过程中加上 ignore 并打印错误异常:
import sys import urllib def urlResolve(url): try: output = url.decode('utf8','ignore').encode('gbk') return output except: print ' ERROR ',sys.exc_info(),url
使用了ignore以后,就会忽略编码中的错误,尽可能地进行编码的翻译。
对于Python普通的py文件,往往会加上:
#!/usr/bin/env python
#coding=utf-8
或者
#!/usr/bin/env python
#coding=gbk
来指定文件的编码格式。
相关推荐
在Python编程中,文件读写操作是非常常见的需求之一,尤其是在处理非英文或特殊字符时,经常会遇到乱码问题。本文将深入探讨Python中的文件读写以及如何正确处理编码问题,避免出现乱码的情况。 #### 一、Python...
今天在用python3+ImageFont输出中文时,结果显示乱码 # coding:utf-8 from PIL import Image, ImageDraw, ImageFont image= Image.new('RGB', (559, 320),(255,255,255)) draw = ImageDraw.Draw(image) # draw.text...
Python 中文乱码问题深入分析 在 Python 中,中文乱码问题一直是一个让人头疼的问题,经常抛出编码转换的异常。那么,Python 中的 str 和 unicode 到底是什么东西呢? 首先,Python 中的 unicode 指的是 unicode ...
Python是一种广泛使用的编程语言,但在处理中文字符时可能会遇到乱码问题。这主要是因为Python的默认内部编码是ASCII,不支持中文字符。为了解决这个问题,我们需要采取一些措施确保中文字符能够正确显示。 1. **...
综上所述,Python中文乱码问题主要源于字符编码的不匹配,通过正确识别和指定编码,可以避免大部分乱码情况的发生。在处理中文字符时,养成良好的编码习惯,统一使用UTF-8编码,可以显著减少乱码问题,提升开发效率...
Python 编码与解码详解 编码是将可读的字符转换为计算机内部表示的过程,而解码则是相反的过程,即将计算机内部的表示转换回可读的字符。...正确处理编码问题可以避免字符乱码,提高程序的兼容性和稳定性。
将dll文件替换pyzbar文件夹中的dll文件,例如我将该libzbar-64.dll文件直接复制到E:\EngineeringSoftwares\Python3.9.1\Lib\site-packages\pyzbar文件夹中,并选择替换文件即可。
描述:本文目的为Python程序员简练地介绍字符编码相关支持,彻底解疑Python中文乱码、Python 2与Python 3字符编码差异等相关问题。 标签:无 部分内容: Python中文乱码详解 1. 字符编码的概念 字符是抽象符号...
windows中文操作系统下,vs的c++项目默认编码是GB2312 python默认是utf-8编码 最好在c++程序顶上加: #pragma execution_character_set(“GB2312”) c++中的字符串一定就是gbk编码 传入python前要做编码转换 准备一...
在使用Python处理中文字符时,可能会遇到中文乱码的问题。中文乱码问题的出现通常是由于编码设置不正确所导致的。本文将详细探讨这一问题,并提供一种有效的解决方法。 #### 一、问题背景 在Python环境中处理文本...
### Python字符编码与中文乱码问题详解 #### 一、引言 在处理中文文本时,经常遇到的一个问题是中文乱码。特别是在使用Python进行开发时,由于不同的操作系统默认编码方式不同,以及Python自身对源文件编码的处理...
当Python与MySQL交互,特别是涉及到中文字符时,如果编码设置不正确,就可能出现乱码。以下列出可能导致乱码的几个方面: 1. **MySQL数据库编码配置**:如果MySQL数据库、表或字段的字符集未设置为支持中文字符的...
在Linux环境下,Python程序处理中文字符时经常遇到乱码问题,这主要涉及到编码设置和字体配置。本篇文章将深入探讨如何解决Linux下Python中文乱码的常见问题,并提供实际操作的解决方案。 首先,问题通常出现在当...
特别是当我们在程序中尝试输出或处理中文字符串时,如果没有正确地设置编码方式,就会出现乱码或者是语法错误。本文将详细介绍如何解决Python中的中文编码问题,并给出具体的解决方案。 #### 二、Python中的默认...
Python中的中文乱码问题主要源于字符编码的理解和处理不当,这是许多程序员在处理文本数据时面临的挑战。在Python 2和Python 3中,字符编码的处理方式有所不同,增加了问题的复杂性。本文将深入探讨Python中处理中文...
在Python编程语言中,处理中文字符时可能会遇到乱码问题,这是由于编码和解码的不一致导致的。本文将详细解析Python中的中文乱码问题,帮助你理解其原理并提供解决方案。 首先,我们需要理解编码与解码的概念。编码...
Python 字符类型主要涉及到字符编码,特别是 Unicode 编码,这是一种全球通用的字符集标准,旨在解决...在处理汉字或其他非 ASCII 字符时,确保正确使用 Unicode 可以避免字符乱码的问题,提高代码的可移植性和可靠性。
在使用 Selenium WebDriver 和 ReportNG 进行自动化测试时,如果报告中包含中文字符,可能会出现乱码的问题。这是因为 ReportNG 在生成报告时没有正确地处理中文字符的编码,导致乱码的出现。解决这个问题的关键是...