在有人说这是一个重复的问题之前,我只想告诉你,我在命令行中运行这个程序所得到的错误与我见过的所有其他相关问题都是不同的。在
我试图用Python运行一个非常短的脚本
from bs4 import BeautifulSoup
import urllib.request
html = urllib.request.urlopen("http://dictionary.reference.com/browse/word?s=t").read().strip()
dhtml = str(html, "utf-8").strip()
soup = BeautifulSoup(dhtml.strip(), "html.parser")
print(soup.prettify())
但是当我用运行这个程序时,我总是得到一个错误python.exe. UnicodeEncodeError: 'charmap' codec can't encode character '\u025c
。我尝试了很多方法来解决这个问题,但是我设法将它与将字节转换为字符串的问题隔离开来。当我在空闲状态下运行这个程序时,我得到了预期的HTML。IDLE自动在做什么?我能用IDLE的解释程序代替吗python.exe?谢谢!在
我的问题是由print(soup.prettify())
引起的,但是type(soup.prettify())
返回{
我最后决定使用encode()
和{
控制台字符编码不能表示^{} i.e., "ɜ" Unicode character (U+025C LATIN SMALL LETTER REVERSED OPEN E) 。在
如果相应的字体支持给定的Unicode字符,IDLE直接显示Unicode(仅BMP字符)。在
是的,运行:
注意:如果使用Unicode API,则可以将任意Unicode字符写入Windows控制台:
^{pr2}$见What's the deal with Python 3.4, Unicode, different languages and Windows?
最后我决定使用encode()和decode(),因为这会带来麻烦。如果有人知道如何解决一个问题,请这样做;同时,感谢你所有的答案
不是真的。你和其他人一样拥有PrintFails。在
Windows控制台无法打印Unicode。(严格来说,这不是真的,但是要弄清楚为什么、何时以及如何从控制台中获取Unicode是一项痛苦的工作,通常不值得这么做。)尝试打印不在控制台有限编码范围内的字符是行不通的,因此Python会给出一个错误。在
您可以在运行脚本之前运行
set PYTHONIOENCODING=utf-8
命令,告诉Python使用和编码可以包含任何字符(因此没有错误),但是任何非ASCII输出仍然会出现混乱,因为它的编码与控制台的实际代码页不匹配。在(或者只使用IDLE。)
相关问题 更多 >
编程相关推荐