`
dacoolbaby
  • 浏览: 1267440 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Python的中文字符乱码

阅读更多

打算用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中的文件读写以及如何正确处理编码问题,避免出现乱码的情况。 #### 一、Python...

    解决Python3用PIL的ImageFont输出中文乱码的问题

    今天在用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 中文乱码 问题深入分析.docx

    Python 中文乱码问题深入分析 在 Python 中,中文乱码问题一直是一个让人头疼的问题,经常抛出编码转换的异常。那么,Python 中的 str 和 unicode 到底是什么东西呢? 首先,Python 中的 unicode 指的是 unicode ...

    python避免中文乱码的代码.docx

    Python是一种广泛使用的编程语言,但在处理中文字符时可能会遇到乱码问题。这主要是因为Python的默认内部编码是ASCII,不支持中文字符。为了解决这个问题,我们需要采取一些措施确保中文字符能够正确显示。 1. **...

    Python中文乱码

    综上所述,Python中文乱码问题主要源于字符编码的不匹配,通过正确识别和指定编码,可以避免大部分乱码情况的发生。在处理中文字符时,养成良好的编码习惯,统一使用UTF-8编码,可以显著减少乱码问题,提升开发效率...

    20180530_Python编码及中文乱码1

    Python 编码与解码详解 编码是将可读的字符转换为计算机内部表示的过程,而解码则是相反的过程,即将计算机内部的表示转换回可读的字符。...正确处理编码问题可以避免字符乱码,提高程序的兼容性和稳定性。

    解决python pyzbar库 识别二维码中文内容乱码问题

    将dll文件替换pyzbar文件夹中的dll文件,例如我将该libzbar-64.dll文件直接复制到E:\EngineeringSoftwares\Python3.9.1\Lib\site-packages\pyzbar文件夹中,并选择替换文件即可。

    Python中文乱码详解参考.pdf

    描述:本文目的为Python程序员简练地介绍字符编码相关支持,彻底解疑Python中文乱码、Python 2与Python 3字符编码差异等相关问题。 标签:无 部分内容: Python中文乱码详解 1. 字符编码的概念 字符是抽象符号...

    解决c++调用python中文乱码问题

    windows中文操作系统下,vs的c++项目默认编码是GB2312 python默认是utf-8编码 最好在c++程序顶上加: #pragma execution_character_set(“GB2312”) c++中的字符串一定就是gbk编码 传入python前要做编码转换 准备一...

    python 中文乱码

    在使用Python处理中文字符时,可能会遇到中文乱码的问题。中文乱码问题的出现通常是由于编码设置不正确所导致的。本文将详细探讨这一问题,并提供一种有效的解决方法。 #### 一、问题背景 在Python环境中处理文本...

    Python字符编码_中文乱码.pdf

    ### Python字符编码与中文乱码问题详解 #### 一、引言 在处理中文文本时,经常遇到的一个问题是中文乱码。特别是在使用Python进行开发时,由于不同的操作系统默认编码方式不同,以及Python自身对源文件编码的处理...

    python查询mysql中文乱码问题

    当Python与MySQL交互,特别是涉及到中文字符时,如果编码设置不正确,就可能出现乱码。以下列出可能导致乱码的几个方面: 1. **MySQL数据库编码配置**:如果MySQL数据库、表或字段的字符集未设置为支持中文字符的...

    linux下python中文乱码解决方案详解

    在Linux环境下,Python程序处理中文字符时经常遇到乱码问题,这主要涉及到编码设置和字体配置。本篇文章将深入探讨如何解决Linux下Python中文乱码的常见问题,并提供实际操作的解决方案。 首先,问题通常出现在当...

    python学习教程,如何解决Python中文编码乱码问….docx

    特别是当我们在程序中尝试输出或处理中文字符串时,如果没有正确地设置编码方式,就会出现乱码或者是语法错误。本文将详细介绍如何解决Python中的中文编码问题,并给出具体的解决方案。 #### 二、Python中的默认...

    Python中文乱码详解.pdf

    Python中的中文乱码问题主要源于字符编码的理解和处理不当,这是许多程序员在处理文本数据时面临的挑战。在Python 2和Python 3中,字符编码的处理方式有所不同,增加了问题的复杂性。本文将深入探讨Python中处理中文...

    Python中文乱码详解.rar

    在Python编程语言中,处理中文字符时可能会遇到乱码问题,这是由于编码和解码的不一致导致的。本文将详细解析Python中的中文乱码问题,帮助你理解其原理并提供解决方案。 首先,我们需要理解编码与解码的概念。编码...

    python 字符类型

    Python 字符类型主要涉及到字符编码,特别是 Unicode 编码,这是一种全球通用的字符集标准,旨在解决...在处理汉字或其他非 ASCII 字符时,确保正确使用 Unicode 可以避免字符乱码的问题,提高代码的可移植性和可靠性。

    Selenium WebDriver + ReportNG中文乱码问题

    在使用 Selenium WebDriver 和 ReportNG 进行自动化测试时,如果报告中包含中文字符,可能会出现乱码的问题。这是因为 ReportNG 在生成报告时没有正确地处理中文字符的编码,导致乱码的出现。解决这个问题的关键是...

Global site tag (gtag.js) - Google Analytics