相关疑难解决方法(0)

UnicodeEncodeError:'charmap'编解码器无法编码字符

我正在试图抓一个网站,但它给了我一个错误.

我正在使用以下代码:

import urllib.request
from bs4 import BeautifulSoup

get = urllib.request.urlopen("https://www.website.com/")
html = get.read()

soup = BeautifulSoup(html)

print(soup)
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

File "C:\Python34\lib\encodings\cp1252.py", line 19, in encode
    return codecs.charmap_encode(input,self.errors,encoding_table)[0]
UnicodeEncodeError: 'charmap' codec can't encode characters in position 70924-70950: character maps to <undefined>
Run Code Online (Sandbox Code Playgroud)

我该怎么做才能解决这个问题?

python urllib beautifulsoup

152
推荐指数
8
解决办法
30万
查看次数

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万
查看次数

Windows cmd编码更改导致Python崩溃

首先,我将Windows CMD编码更改为utf-8并运行Python解释器:

chcp 65001
python
Run Code Online (Sandbox Code Playgroud)

然后我尝试在其中打印一个unicode sting,当我这样做时,Python以一种特殊的方式崩溃(我只是在同一个窗口中得到一个cmd提示符).

>>> import sys
>>> print u'ëèæîð'.encode(sys.stdin.encoding)
Run Code Online (Sandbox Code Playgroud)

任何想法为什么会发生以及如何使它工作?

UPD:sys.stdin.encoding退货'cp65001'

UPD2:我刚才发现这个问题可能与utf-8使用多字节字符集这一事实有关(kcwu就此提出了一个很好的观点).我尝试使用'windows-1250'运行整个示例并得到'ëea?'.Windows-1250使用单字符集,因此它适用于它理解的字符.但是我仍然不知道如何让'utf-8'在这里工作.

UPD3:哦,我发现它是一个已知的Python bug.我想会发生的事情是Python将cmd编码复制为'cp65001到sys.stdin.encoding并尝试将其应用于所有输入.由于它无法理解'cp65001',因此它会在包含非ascii字符的任何输入上崩溃.

python windows unicode encoding cmd

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

如何使用Python 3.4(Windows 8)将utf-8打印到控制台?

我从来没有完全包围编码和解码unicode到其他格式(utf-8,utf-16,ascii等),但我已经到了一个令人困惑和令人沮丧的墙.我想要做的是从python模块打印utf-8卡符号(♠,♥,♦,♣)到Windows控制台.我正在使用的控制台是git bash,我使用console2作为前端.我尝试/阅读了下面的一些方法,到目前为止还没有任何工作.让我知道我正在做的事情是否可能以及正确的做法.

  • 确保控制台可以处理utf-8字符.这两个测试让我相信控制台不是问题.

在此输入图像描述

  • 从python模块尝试同样的事情.
    当我执行.py时,这就是结果.

    print(u'?')
    UnicodeEncodeError: 'charmap' codec can't encode character '\u2660' in position 0: character maps to <undefined>
    
    Run Code Online (Sandbox Code Playgroud)
  • 尝试编码♠.这让我回到了用utf-8编码的unicode集,但仍然没有spade符号.

    text = '?'
    print(text.encode('utf-8'))
    b'\xe2\x99\xa0'
    
    Run Code Online (Sandbox Code Playgroud)

我觉得我错过了一步或者没有理解整个编码/解码过程.我读过这个,这个,这个.最后一个页面的提示包裹sys.stdout的入代码,但文章说使用stdout是不必要的,点使用的编解码器模块的另一页.

我很困惑!我觉得很难找到关于这个主题的思想质量文档,希望有人可以清除它.任何帮助总是受到赞赏!

奥斯汀

python unicode console encoding utf-8

24
推荐指数
2
解决办法
3万
查看次数

IPython Notebook:什么是默认编码?

我使用编码utf-8创建了一个包.

调用函数时,它返回一个DataFrame,其中的列以utf-8编码.

在命令行中使用IPython时,显示此表的内容时没有任何问题.使用Notebook时,它会因错误而崩溃'utf8' codec can't decode byte 0xe7.我在下面附上了一个完整的追溯.

使用Notebook的正确编码是什么?

UnicodeDecodeError                        Traceback (most recent call last)
<ipython-input-13-92c0011919e7> in <module>()
      3 ver = verif.VerificacaoNA()
      4 comp, total = ver.executarCompRealFisica(DT_INI, DT_FIN)
----> 5 comp

c:\Python27-32\lib\site-packages\ipython-0.13.1-py2.7.egg\IPython\core\displayhook.pyc in __call__(self, result)
    240             self.update_user_ns(result)
    241             self.log_output(format_dict)
--> 242             self.finish_displayhook()
    243 
    244     def flush(self):

c:\Python27-32\lib\site-packages\ipython-0.13.1-py2.7.egg\IPython\zmq\displayhook.pyc in finish_displayhook(self)
     59         sys.stdout.flush()
     60         sys.stderr.flush()
---> 61         self.session.send(self.pub_socket, self.msg, ident=self.topic)
     62         self.msg = None
     63 

c:\Python27-32\lib\site-packages\ipython-0.13.1-py2.7.egg\IPython\zmq\session.pyc in send(self, stream, msg_or_type, content, parent, ident, buffers, subheader, track, header)
    557 …
Run Code Online (Sandbox Code Playgroud)

ipython pandas ipython-notebook

21
推荐指数
1
解决办法
2万
查看次数

python中的中文和日文字符支持

如何正确阅读日文和中文字符.我正在使用python 2.5.输出显示为"E:\Test\?????????"

path = r"E:\Test\?????????"
t = path.encode()
print t
u = path.decode()
print u
t = path.encode("utf-8")
print t
t = path.decode("utf-8")
print t
Run Code Online (Sandbox Code Playgroud)

python python-2.5

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