返回顶部
首页 > 资讯 > 后端开发 > Python >解决python中文乱码问题方法总结
  • 927
分享到

解决python中文乱码问题方法总结

python中文乱码pythondecodepythonencode 2022-06-02 22:06:47 927人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

在运行这样类似的代码: #!/usr/bin/env pythons="中文"print s 最近经常遇到这样的问题: 问题一: SyntaxError: Non-ASCII character '\xe4'

在运行这样类似的代码:


#!/usr/bin/env pythons="中文"print s

最近经常遇到这样的问题:

问题一:

SyntaxError: Non-ASCII character '\xe4' in file E:\coding\Python\Untitled 6.py on line 3, but no encoding declared; see Http://www.python.org/peps/pep-0263.html for details

问题二:

UnicodeDecodeError: 'ascii' codec can't decode byte 0xe5 in position 108: ordinal not in range(128)

问题三:

UnicodeEncodeError: 'gb2312' codec can't encode character u'\u2014' in position 72366: illegal multibyte sequence

这些都是跟字符编码有关的问题,很郁闷,中文总是弄不出来,找了很多方案,这里有些是我前几天找到的一些方案,拿出来给大家分享一下哈

字符串在Python内部的表示是unicode 编码,因此,在做编码转换时,通常需要以unicode作为中间编码,即先将其他编码的字符串解码(decode)成unicode,再从unicode编码(encode)成另一种编码。

decode的作用是将其他编码的字符串转换成unicode编码,如str1.decode('gb2312'),表示将gb2312编码的字符串str1转换成unicode编码。

encode的作用是将unicode编码转换成其他编码的字符串,如str2.encode('gb2312'),表示将unicode编码的字符串str2转换成gb2312编码。

在某些IDE中,字符串的输出总是出现乱码,甚至错误,其实是由于IDE的结果输出控制台自身不能显示字符串的编码,而不是程序本身的问题。

如在UliPad中运行如下代码:


s=u"中文"print s

会提示:

UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)

这是因为UliPad在英文windowsXP 上的控制台信息输出窗口是按照ascii编码输出的(英文系统的默认编码是ascii),而上面代码中的字符串是Unicode编码的,所以输出时产生了错误。

将最后一句改为:print s.encode('gb2312')

则能正确输出“中文”两个字。

若最后一句改为:print s.encode('utf8')

则输出:\xe4\xb8\xad\xe6\x96\x87,这是控制台信息输出窗口按照ascii编码输出utf8编码的字符串的结果。

下面代码可能比较通用一些,如下:


#!/usr/bin/env python  #coding=utf-8  s="中文"if isinstance(s,unicode):     #s=u"中文"      print s.encode('gb2312') else:     #s="中文"      print s.decode('utf-8').encode('gb2312')#!/usr/bin/env python#coding=utf-8s="中文"if isinstance(s,unicode): #s=u"中文" print s.encode('gb2312')else: #s="中文" print s.decode('utf-8').encode('gb2312')

看看下面一段代码:


#!/usr/bin/env python  #coding=utf-8  #python version:2.7.4 #system:windows xp    import httplib2def getPageContent(url):    '''''    使用httplib2用编程的方式根据url获取网页内容    将bytes形式的内容转换成utf-8的字符串    '''    #使用ie9的user-agent,如果不设置user-agent将会得到403禁止访问     headers={'user-agent':'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)',            'cache-control':'no-cache'}    if url:         response,content= httplib2.Http().request(url,headers=headers)                     if response.status== 200 :            return content

import sys  reload(sys)  sys.setdefaultencoding('utf-8')  #修改默认编码方式,默认为ascci print sys.getdefaultencoding()   content= getPageContent("http://www.oschina.net/")print content.decode('utf-8').encode('gb2312')#!/usr/bin/env python#coding=utf-8#python version:2.7.4#system:windows xpimport httplib2def getPageContent(url):    '''    使用httplib2用编程的方式根据url获取网页内容    将bytes形式的内容转换成utf-8的字符串    '''    #使用ie9的user-agent,如果不设置user-agent将会得到403禁止访问    headers={'user-agent':'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)',            'cache-control':'no-cache'}    if url:         response,content= httplib2.Http().request(url,headers=headers)                   if response.status== 200 :            return content

import sysreload(sys)sys.setdefaultencoding('utf-8')  #修改默认编码方式,默认为ascciprint sys.getdefaultencoding()content= getPageContent("//www.jb51.net/")print content.decode('utf-8').encode('gb2312')

上面的代码的意思:向www.jb51.net网站请求他的主页,(如果直接是utf-8编码,不能输出中文)想将编码方式为utf-8转向gd2312,出现问题三

当我把它将print content.decode('utf-8').encode('gb2312')改成print content.decode('utf-8').encode('gb2312', ‘ignore')时,OK了,可以显示中文了,但不敢确定是否为全部,貌似只有部分吧,有些不能用gb2312编码

然而,当我把网站换成 www.soso.com时,不用转为gb2312,用utf-8即可正常显示中文

总结一下:

向文件直接输出ss会抛出同样的异常。在处理unicode中文字符串的时候,必须首先对它调用encode函数,转换成其它编码输出。这一点对各个环境都一样。在Python中,“str”对象就是一个字节数组,至于里面的内容是不是一个合法的字符串,以及这个字符串采用什么编码(gbk, utf-8, unicode)都不重要。这些内容需要用户自己记录和判断。这些的限制也同样适用于“unicode”对象。要记住“unicode”对象中的内容可绝对不一定就是合法的unicode字符串,我们很快就会看到这种情况。在windows的控制台上,支持gbk编码的str对象和unicode编码的unicode对象。

更多关于解决python中文乱码问题方法总结的文章请查看下面的相关链接

--结束END--

本文标题: 解决python中文乱码问题方法总结

本文链接: https://lsjlt.com/news/10556.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 解决python中文乱码问题方法总结
    在运行这样类似的代码: #!/usr/bin/env pythons="中文"print s 最近经常遇到这样的问题: 问题一: SyntaxError: Non-ASCII character '\xe4'...
    99+
    2022-06-02
    python中文乱码 python decode python encode
  • 解决Oracle提示乱码问题的方法总结
    解决Oracle提示乱码问题的方法总结 在使用Oracle数据库时,经常会遇到数据存储或查询过程中出现乱码的情况,这给数据操作和结果展示带来了困扰。造成乱码问题的主要原因是数据库字符集...
    99+
    2024-03-08
    数据类型选择 编码设置 字符集调整
  • javaWEB中前后台乱码问题的解决方法总结
    JAVA中几种常见的编码格式及含义:ASCII 码学过计算机的人都知道 ASCII 码,总共有 128 个,用一个字节的低 7 位表示,0~31 是控制字符如换行回车删除等;32~126 是打印字符,可以通过键盘输入并且能够显示出来。ISO...
    99+
    2023-05-31
    java 乱码 ava
  • 解决中文乱码问题的matplotlib方法
    解决matplotlib中文乱码问题的方法,需要具体代码示例 Matplotlib是一个常用的用于数据可视化的Python库,可以生成各种图表和图形。然而,对于中文用户来说,经常会遇到一个问题,就是生成的图表中的中文字符显示乱码...
    99+
    2024-01-13
    中文 乱码
  • python json.dumps中文乱码问题解决
    json.dumps(var,ensure_ascii=False)并不能完全解决中文乱码的问题 json.dumps在不同版本的Python下会有不同的表现, 注意下面提到的中文乱...
    99+
    2024-04-02
  • PHP中文乱码问题解决方法详解
    PHP中文乱码问题解决方法详解 在进行PHP开发过程中,经常会遇到中文乱码的问题,这种问题影响用户体验,也会降低网站的可读性。中文乱码问题的根本原因是编码不一致,导致服务器无法正确解析...
    99+
    2024-04-02
  • Golang文档乱码问题解决方法
    Golang作为一门新兴的编程语言,备受广大程序员的青睐。然而,与其他编程语言不同的是,Golang的官方文档中经常出现乱码问题,给大家的学习和使用带来了很多不便。本文将从以下几个方面探讨Golang文档乱码问题的原因和解决方法。一、原因分...
    99+
    2023-05-14
  • Android Studio的中文乱码问题解决方法
    Android Studio安装后发现所有的中文,不管是界面上的还是输出的log中的中文都变成小框框  可以肯定是字体的问题 解决:菜单File->settin...
    99+
    2022-06-06
    Android Studio 乱码 studio 方法 Android
  • 解决PHP Dompdf中文乱码问题的方法
    解决 PHP Dompdf 中文乱码问题的方法 PHP Dompdf 是一个用于将 HTML 文档转换为 PDF 文件的工具,它的功能强大且易于使用。然而,在处理中文内容时,有时会遇到...
    99+
    2024-03-05
    解决方法 dompdf 中文乱码
  • python中文编码乱码问题的解决
    目录前言:一、什么是字符编码。1.ASCII2.GB23123.Unicode4.UTF-8二、Python2中的字符编码三、decode()与encode()方法四、一个字符编码的...
    99+
    2024-04-02
  • python 采集中文乱码问题的完美解决方法
    近几日遇到采集某网页的时候大部分网页OK,少部分网页出现乱码的问题,调试了几日,终于发现了是含有一些非法字符造成的..特此记录 1. 在正常情况下..可以用 import chardet thisc...
    99+
    2022-06-04
    乱码 解决方法 中文
  • MySQL中文乱码问题解决方案
    linux 中 MySQL 出现中文乱码问题如下操作 编辑vi /etc/my.cnf 文件,添加图中标记三行 [client] default-character-set=utf8 [mysqld] chara...
    99+
    2022-05-17
    MySQL 中文乱码
  • jsp中文乱码问题的简单解决方法
    简单解决jsp中文乱码问题 初学jsp制作一个简单的响应页面 具体代码如下: <form action="test.jsp"> username : <in...
    99+
    2024-04-02
  • mysql5.5中文乱码问题解决的有用方法
    查看MySQL的字符集 show variables like '%char%'; 发现有部分不是utf-8 解决办法一(推荐,本人实验有用) 修改MySQL配置文件,来到mys...
    99+
    2024-04-02
  • Ubuntu下gedit中文乱码问题的解决方法
    本篇内容主要讲解“Ubuntu下gedit中文乱码问题的解决方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Ubuntu下gedit中文乱码问题的解决方法”吧!gedit中文乱码问题解决,wi...
    99+
    2023-06-13
  • HTML显示中文乱码问题的解决方法
    在使用HTML编写网页或者文章时,很多人都会遇到显示中文乱码的问题。这种问题主要是由于编码格式不对或者字库缺失导致的。如果没有解决这个问题,就会导致网页在不同的浏览器上显示的效果不同,影响网站的美观度和用户的体验。这篇文章将介绍HTML显示...
    99+
    2023-05-14
  • 解决PHP中文乱码问题的有效方法
    解决PHP中文乱码问题的有效方法 在进行PHP开发过程中,经常会遇到中文乱码的问题,这给我们的程序开发和数据处理带来了不便。中文乱码问题的出现通常是因为字符编码不统一或者出现了字符集转...
    99+
    2024-03-07
    中文字符 php编码 乱码处理 表单提交
  • 解决PHP输出中文乱码问题的方法
    解决PHP输出中文乱码问题的方法 在进行PHP开发过程中,经常会遇到输出中文乱码的问题,这给我们的网站开发和用户体验带来了困扰。在PHP中,解决中文乱码问题的方法主要包括设置HTTP头...
    99+
    2024-03-15
    编码 字符 输出
  • python如何解决中文编码乱码问题
    小编给大家分享一下python如何解决中文编码乱码问题,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、什么是字符编码。要彻底解决字符编码的问题就不能不去了解到底...
    99+
    2023-06-25
  • java乱码问题解决方法
    java乱码,分为几个位置的乱码。(推荐:java视频教程)一、是JSP页面乱码问题,解决方式:二、后台向前端传输字符串的的乱码解决方式: response.setContentType("text/html;charset=UTF-8")...
    99+
    2021-09-12
    java基础 java 乱码
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作