解决Python2中文ascii编码的方法

YiiChina签到的时候,经常会看到有人在说说里面发群主是最帅的,yii 是 PHP 最好的框架,没有之一,就想到使用一言,在每天签到的时候也发一句话

同时使用方糖将内容推送到微信,防止有什么不对的内容,方便上去修改

昨天晚上抽空搞得时候,发现报错了:

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

再三确认文件头含有# coding=utf-8,没问题啊

经过搜索,发现应该是因为Python2.x的默认编码是ascii,而代码中可能由utf-8的字符导致,解决方法是设置utf-8

使用Python自带模块sys修改编码

sys.getdefaultencoding()
# 获取系统当前编码,一般默认为 ascii
sys.setdefaultencoding()
# 设置系统默认编码

所以在代码中的import后增加下面几行代码:

import sys
if sys.getdefaultencoding() != ‘utf-8‘:
    reload(sys)
    sys.setdefaultencoding(‘utf-8‘)

加了一个reload(sys)是因为Python2.x初始化后会删除sys.setdefaultencoding这个方法,我们需要重新载入

原文地址:https://www.cnblogs.com/zwq-/p/11327186.html

时间: 2024-08-13 09:19:45

解决Python2中文ascii编码的方法的相关文章

解决HTML中文乱码

解决HTML中文乱码问题的方法是在HTML文件头中加入以下代码: <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

phpstorm配置git并解决Terminal 中文乱码(Unicode 编码)的方法

前言:在使用PHPstorm的时候,需要用到terminal,主要还是用这个操作git,但是在使用这个的时候会发现,代码里所有中文都是乱码状态,不利于使用,下面就来看看怎么解决这个问题 一.先在phpstorm上配置git 1.打开 settings 设置界面,选择 Tools 中的 Terminal (File -> settings -> Tools -> Terminal) 2.修改 Shell path 为你的Git bash 安装路径,我的在 D:\developer\Git\

Python print报ascii编码异常的靠谱解决办法

之前遇到此异常UnicodeEncodeError: 'ascii' codec can't encode characters...,都是用这种方式解决:sys.setdefaultencoding('utf-8') 今天看到如下文章,阐述了此方式的弊端: http://blog.ernest.me/post/python-setdefaultencoding-unicode-bytes 但此文章只考虑了未使用第三方库的情况下的解决办法,而第三方库里如果也有print的话,就束手无策了,总不能

解决windows环境中python2.7&#39;ascii&#39; codec can&#39;t encode character

在python2.7下,将字符串写入到文件时会出现"UnicodeEncodeError: 'ascii' codec can't encode character u'\xa0' in position"的错误,原因是由于python基于ASCII处理字符的,当出现不属于ASCII的字符时,会出现错误信息. 原因是pip安装python包会加载我的用户目录,我的用户目录恰好是中文的,ascii不能编码.解决办法是: python目录 Python27\Lib\site-package

Linux中文显示乱码问题解决方法(编码查看及转换)

Linux中文显示乱码问题解决方法(编码查看及转换) 1,示例 图中名为一个.sql文件的一段内容,是一个数据库文件.其在windows中打开显示正常,在Linux中,中文部分显示为乱码. 注意:这个与数据库乱码的情况不同,属于文件内容的乱码. 2,分析 Linux系统与windows系统在编码上有显著的差别.Windows中的文件的格式默认是GBK(gb2312),而Linux系统中文件的格式默认是UTF-8.这两个系统就好比是中国和日本.文件就好比是一个人,如果要在另外的国家居住就要办理居住

解决Python2.7的UnicodeEncodeError: ‘ascii’ codec can’t encode异常错误

今天准备将某SQLite数据库的内容导出到文本文档(*.txt)中,设计的Python程序如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 # -*- coding: UTF-8 -*- import sqlite3   def gsel(cur): cur.execute("SELECT * FROM collection")   def main(): conn = sqlite3.connect("build.db3

【Cocos2d-x游戏开发】解决Cocos2d-x中文乱码的三种方法

众所周知,Cocos2d-x是一款不错的开源引擎,但是在Cocos2d-x中直接使用中文是无法正确显示的.比如下面的情况: 解决这个问题常用的有三种方法:1.通过转换为UTF-8编码来显示.2.使用iconv库来解决.3.使用解析xml或者json文件来解决.这里推荐使用第三种方法来解决,因为比较简单方便,还能支持I18N国际化.下面我们来一一详细了解一下每种解决方案的具体实现: 一.通过转换为UTF-8编码的方式显示出来,建立一个方法用于转换中文到对应的UTF-8编码,具体代码如下: 1 ch

asp.net 解决文本中文乱码 &nbsp; 各类文本编码转UTF-8 文本

/// <summary> /// 解决文本中文乱码   各类文本编码转UTF-8 文本 /// </summary> /// <param name="fullPath">原路径</param> /// <param name="savePath">临时保存路径</param> /// <param name="strnew">新的文件路径</param&

解决osgEarth中文显示乱码的几种方法

解决osgEarth中文显示乱码的几种方法 在此感谢那些在路上那个帮助过别人的朋友,谢谢. 方法一: 通过自己写函数转换类型. 下面这三个函数先复制过去吧. void unicodeToUTF8(const std::wstring &src, std::string& result) { int n = WideCharToMultiByte( CP_UTF8, 0, src.c_str(), -1, 0, 0, 0, 0 ); result.resize(n); ::WideCharT