VSCode

时间:2017-06-23 14:57:31

标签: python visual-studio-code vscode-settings vscode-tasks

我使用Visual Studio Code学习BeautifullSoup,当我运行此脚本时:

import requests
from bs4 import BeautifulSoup
from fake_useragent import UserAgent

ua = UserAgent()
header = {'user-agent':ua.chrome}
google_page = requests.get('https://www.google.com',headers=header)

soup = BeautifulSoup(google_page.content,'lxml') # html.parser

print(soup.prettify())

我收到以下错误:

  

Traceback(最近一次调用最后一次):文件   " c:\ ... \ intro-to-soup-2.py",第13行,in       print(soup.prettify())File" C:\ ... \ Local \ Programs \ Python \ Python36-32 \ lib \ encodings \ cp1252.py",   第19行,编码       return codecs.charmap_encode(input,self.errors,encoding_table)[0] UnicodeEncodeError:' charmap'编解码器无法对字符进行编码   ' \ U0001f440'在位置515:字符映射到

如果我强制在汤变量中对utf-8进行编码,我就不能使用美化,因为它不能使用字符串...... 还尝试在没有成功的第一行代码上使用# - - coding:utf-8 -

这是我的这个项目的tasks.json:

{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "0.1.0",
"command": "python",
"isShellCommand": true,
"args": ["${file}"],
"files.encoding": "utf8",
// Controls after how many characters the editor will wrap to the next line. Setting this to 0 turns on viewport width wrapping (word wrapping). Setting this to -1 forces the editor to never wrap.
"editor.wrappingColumn": 0, // default value is 300
// Controls the font family.
"editor.fontFamily": "Consolas, 'Malgun Gothic', '맑은 고딕','Courier New', monospace",
// Controls the font size.
"editor.fontSize": 15,
"showOutput": "always"
}

完全相同的代码在PyCharm中运行没有任何问题。 我有什么想法可以在Visual Studio Code中解决这个问题吗?

我的" pip冻结"结果:

astroid==1.5.3
beautifulsoup4==4.5.3
colorama==0.3.9
fake-useragent==0.1.7
html5lib==0.999999999
isort==4.2.15
lazy-object-proxy==1.3.1
lxml==3.7.2
mccabe==0.6.1
pylint==1.7.1
requests==2.12.5
selenium==3.4.3
six==1.10.0
webencodings==0.5
wrapt==1.10.10
xlrd==1.0.0
XlsxWriter==0.9.6

感谢您的时间,

Eunito。

1 个答案:

答案 0 :(得分:2)

这里的问题似乎是python解释器认为stdout / stderr支持的编码。出于某种原因(可以说是VSCode中的一个错误),这被设置为一些特定于平台的值(Windows中的cp1252,我能够在OS X上重现问题并得到ascii)而不是VSCode输出的utf-8窗口支持。你可以修改你的task.json看起来像这样来解决这个问题 - 它设置了一个环境变量,迫使Python解释器使用utf8进行输出。

{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "0.1.0",
    "command": "python3",
    "isShellCommand": true,
    "args": ["${file}"],
    "showOutput": "always",
    "options": {
        "env": {
            "PYTHONIOENCODING":"utf-8"
        }
    }
}

相关位是“选项”字典。