相关疑难解决方法(0)

Python,Unicode和Windows控制台

当我尝试在Windows控制台中打印Unicode字符串时,出现UnicodeEncodeError: 'charmap' codec can't encode character ....错误.我认为这是因为Windows控制台不接受仅Unicode字符.最好的方法是什么??在这种情况下,有什么方法可以让Python自动打印而不是失败?

编辑: 我正在使用Python 2.5.


注意: @ LasseV.Karlsen回答带有复选标记有点过时(从2008年开始).请谨慎使用下面的解决方案/答案/建议!!

截至今天(2016年1月6日),@ JFSebastian答案更为相关.

python unicode

128
推荐指数
7
解决办法
9万
查看次数

更改Python的默认编码?

当我从控制台运行我的应用程序时,我有很多"无法编码"和"无法解码"的Python问题.但是在Eclipse PyDev IDE中,默认字符编码设置为UTF-8,我很好.

我四处搜索设置默认编码,人们说Python sys.setdefaultencoding在启动时删除了该功能,我们无法使用它.

那么什么是最好的解决方案呢?

python console encoding utf-8

127
推荐指数
8
解决办法
26万
查看次数

如何在Python <3中将UTF-8编码的文本打印到控制台?

我正在运行一个最新的Linux系统,我的所有语言环境都是UTF-8:

LANG=de_DE.UTF-8
LANGUAGE=
LC_CTYPE="de_DE.UTF-8"
LC_NUMERIC="de_DE.UTF-8"
LC_TIME="de_DE.UTF-8"
...
LC_IDENTIFICATION="de_DE.UTF-8"
LC_ALL=
Run Code Online (Sandbox Code Playgroud)

现在我想将UTF-8编码的内容写入控制台.

现在Python使用UTF-8进行FS编码,但坚持使用ASCII作为默认编码:-(

>>> import sys
>>> sys.getdefaultencoding()
'ascii'
>>> sys.getfilesystemencoding()
'UTF-8'
Run Code Online (Sandbox Code Playgroud)

我认为最好(干净)的方法是设置PYTHONIOENCODING环境变量.但似乎Python忽略了它.至少在我的系统上ascii,即使在设置envvar之后,我仍然保持默认编码.

# tried this in ~/.bashrc and ~/.profile (also sourced them)
# and on the commandline before running python
export PYTHONIOENCODING=UTF-8
Run Code Online (Sandbox Code Playgroud)

如果我在脚本开头执行以下操作,它可以工作:

>>> import sys
>>> reload(sys)  # to enable `setdefaultencoding` again
<module 'sys' (built-in)>
>>> sys.setdefaultencoding("UTF-8")
>>> sys.getdefaultencoding()
'UTF-8'
Run Code Online (Sandbox Code Playgroud)

但这种做法似乎不洁净.那么,实现这一目标的好方法是什么?

解决方法

而不是更改默认编码 - 这不是一个好主意(请参阅mesilliac的答案) - 我只是sys.stdoutStreamWriter …

python shell encoding ascii utf-8

49
推荐指数
4
解决办法
9万
查看次数

sys.stdout.encoding、locale.getpreferredencoding() 和 sys.getdefaultencoding() 之间有什么区别?

我对 python 很陌生,对这种编码的东西很困惑。到目前为止,我已经阅读了以下类型的“编码”:

import sys
import locale

print (sys.stdout.encoding)
print (locale.getpreferredencoding())
print (sys.getdefaultencoding())
Run Code Online (Sandbox Code Playgroud)

输出:

utf8
cp1252
utf-8
Run Code Online (Sandbox Code Playgroud)

有什么不同?

python encoding locale codepages sys

5
推荐指数
1
解决办法
557
查看次数

为什么json.dumps使用"\ uxxxx"转义非ascii字符

在Python 2中,该函数json.dumps()将确保将所有非ascii字符转义为\uxxxx.

Python 2 Json

但这不是很混乱,因为它\uxxxx是一个unicode字符,应该在unicode字符串中使用.

输出json.dumps()是a str,它是Python 2中的字节字符串.因此它不应该将字符转义为\xhh

>>> unicode_string = u"\u00f8"
>>> print unicode_string
ø
>>> print json.dumps(unicode_string)
"\u00f8"
>>> unicode_string.encode("utf8")
'\xc3\xb8'
Run Code Online (Sandbox Code Playgroud)

python unicode json python-2.x

3
推荐指数
1
解决办法
5193
查看次数

标签 统计

python ×5

encoding ×3

unicode ×2

utf-8 ×2

ascii ×1

codepages ×1

console ×1

json ×1

locale ×1

python-2.x ×1

shell ×1

sys ×1