相关疑难解决方法(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万
查看次数

在Cygwin中永久设置Anaconda的Python路径

我正在尝试在我的Windows 7机器上安装Anaconda.我经常使用cygwin来完成我的命令行工作,我想从那里管理Anaconda.我已经通过图形安装程序没有任何问题,并检查了必要的框以重置我的python安装的默认路径.我继续检查python的位置,最初我得到了这个......

$ which python
/usr/bin/python
Run Code Online (Sandbox Code Playgroud)

从这里python工作得很好......

$ python
Python 2.7.5 (default, Oct  2 2013, 22:34:09)
[GCC 4.8.1] on cygwin
Type "help", "copyright", "credits" or "license" for more information.
Run Code Online (Sandbox Code Playgroud)

但我正试图从蟒蛇工作,所以我只需要重新定义我的道路......

$ export PATH=/cygdrive/c/anaconda:$PATH
$ which python
/cygdrive/c/anaconda/python
Run Code Online (Sandbox Code Playgroud)

现在我应该好好去,但是当我尝试进入python时,它只是挂起

$ python
Run Code Online (Sandbox Code Playgroud)

知道为什么会这样吗?详细回报,下面......

$ python -v
# installing zipimport hook
import zipimport # builtin
# installed zipimport hook
# C:\anaconda\lib\site.pyc matches C:\anaconda\lib\site.py
import site # precompiled from C:\anaconda\lib\site.pyc
# C:\anaconda\lib\os.pyc matches C:\anaconda\lib\os.py
import os # precompiled from C:\anaconda\lib\os.pyc
import errno # builtin …
Run Code Online (Sandbox Code Playgroud)

python windows cygwin anaconda

28
推荐指数
3
解决办法
4万
查看次数

为什么sys.getdefaultencoding()与sys.stdout.encoding不同?它如何破坏Unicode字符串?

我花了几个小时的时间来寻找Unicode字符串的问题,这些字符串被分解为Python(2.7)隐藏的东西,我仍然不明白.首先,我尝试u".."在我的代码中使用一致的字符串,但这导致臭名昭着UnicodeEncodeError.我尝试过使用.encode('utf8'),但这也无济于事.最后,事实证明我不应该使用任何一个,它都可以自动完成.然而,我(这里我需要赞扬一位帮助过我的朋友)确实注意到一些奇怪的事情,同时我的头靠在墙上.sys.getdefaultencoding()返回ascii,同时sys.stdout.encoding返回UTF-8.1.在下面的代码中工作正常,没有任何修改sys和2.提出一个UnicodeEncodeError.如果我更改默认的系统编码 reload(sys).setdefaultencoding("utf8"),那么2.工作正常.我的问题是为什么两个编码变量首先是不同的,如何在这段简单的代码中设法使用错误的编码?请不要把我发送到Unicode HOWTO,我已经在很多问题中看到了这一点UnicodeEncodeError.

#  -*- coding: utf-8 -*-
import sys


class Token:
    def __init__(self, string, final=False):
        self.value = string
        self.final = final

    def __str__(self):
        return self.value

    def __repr__(self):
        return self.value

print(sys.getdefaultencoding())
print(sys.stdout.encoding)

# 1.
myString = "I need 20 000€."
tok = Token(myString)
print(tok)

reload(sys).setdefaultencoding("utf8")

# 2.
myString = u"I need 20 000€."
tok = Token(myString)
print(tok)
Run Code Online (Sandbox Code Playgroud)

python stdout utf sys

8
推荐指数
1
解决办法
6131
查看次数

我应该在我编写的每个 Python 脚本中包含这个样板代码吗?

我的老板让我将以下几行(来自这个答案)放入我编写的 Python 3 脚本中:

import sys
import codecs
sys.stdout = codecs.getwriter("utf-8")(sys.stdout.detach()) 
Run Code Online (Sandbox Code Playgroud)

他说这是为了防止UnicodeEncodeErrors在非 UTF8 语言环境中打印 Unicode 字符。我想知道这是否真的有必要,以及为什么 Python 不会在没有样板代码的情况下正确处理编码/解码。

使 Python 脚本与不同操作系统语言环境兼容的最 Pythonic 方法是什么?这个样板代码到底做了什么?

python unicode python-3.x

4
推荐指数
1
解决办法
408
查看次数

标签 统计

python ×5

unicode ×2

anaconda ×1

console ×1

cygwin ×1

encoding ×1

python-3.x ×1

stdout ×1

sys ×1

utf ×1

utf-8 ×1

windows ×1