106.05.12 vs code python中文亂碼(含事前準備)

最近想寫些python爬蟲
Cygwin雖然有但是有點不太想用vim寫 (X
所以就順勢來找個最近頗熱門的vs code (全名Visual Studio Code)了
熱門主要原因是開源吧
而開源的關係也讓它的release頗頻繁,bugs修復也快

但是遇到亂碼有點煩躁=''=
以為無法解決時就解決了OuO



安裝vs code  
<<注意>>本篇vs code版本為1.15 
下載後幾乎一直下一步就好
安裝python擴充功能


安裝python環境
因為找不到直接使用Cygwin裡面python的方法
所以就再安裝一次
如果用cmd執行python發現找不到

官網下載後安裝(2跟3似乎差異頗大,我是先用3)

安裝中會有一個選項問是否加入path記得打勾
完成後測試


開始寫code
打開vs code按開啟資料夾

大部分會新增 (命名隨意)

接著按下Ctrl + Shift + P,在框框輸入task,點設定工作執行器

接著點tsconfig.json (json是啥目前不重要

把出現的東西改成以下後Ctrl + S儲存
{
    // 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}"
    ],
    "showOutput": "always",
    "options": {
        "env": {
            "PYTHONIOENCODING": "UTF-8"
        }
    }
}

這樣就算設定完成了,開始寫python囉(終於....

新增檔案

.py結尾 (命名隨意)

用最最簡單的當作範例
s = "大家好,中文不亂碼OuO"
print(s)
按下Ctrl + Shift + B它就會建置並執行
結果不是亂碼了OuO


後記 (小分析)
我為了不亂碼找了超久@@
主要是依靠tsconfig.json裡的
"options": {
        "env": {
            "PYTHONIOENCODING": "UTF-8"
        }
    }
如果不信邪可以先把這段砍掉執行看看
絕對吐亂碼

問題並非python、vs code而是M$的cmd
因為cmd的編碼是cp950的
所以vs code要用cmd進行輸出時需要轉換成cp950
就會轉換成全亂碼

如果做一些更改如下會有改進
不過因為是硬轉還是會產生亂碼



參考資料:
最佳解:
VSCode Python 配置
其他:
Python print unicode generate error in output window #6269
Python 3 在 Windows 命令提示字元輸出時遇到 CP950 錯誤
[問題] 中文編碼的疑惑..
[問題] python讀檔時不認得中文字?
Re: [問題] utf8 & cp950
str.encode(encoding="utf-8", errors="strict")
vscode下python print 输出乱码怎么解决?
【已解决】BeautifulSoup已经获得了Unicode的Soup但是print出来却是乱码
requests和BeautifulSoup中文编码转换心得
Python 的編碼
[Python] 使用 Visual Studio Code 作為開發環境
Python 3.6.0 syntax error "Missing parentheses in call to 'print' [duplicate]
The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)

4 則留言:

  1. 您好
    感謝您的分享
    有個問題想請教您
    於VScode中找不到"configure Task Runner"(設定工作執行器)的指令
    請問有解決的方法嗎??

    回覆刪除
    回覆
    1. 你好,依照你的描述我可能無法判斷詳細問題來源
      可以檢查一下以下可能
      1.是否有創建到tsconfig.json (設定完後記得儲存)
      2.vs code版本已經不同了,此篇文章對tsconfig.json的內容已經不適合
      3.tsconfig.json有其他非此篇文章的內容
      建議可以註解或備份看看是哪一塊的指令發生錯誤
      很大可能還是無法解決
      可以將錯誤訊息複製貼到google看看有沒有其他人有同樣問題

      刪除
    2. 我可能知道你的问题。在最新版的vs code里面已经不能通过这个方式打开task.json了,但你仍然可以通过上方菜单栏-任务-配置任务找到。这个问题之前也困扰过我一段时间,因为vs code更新太频繁了,导致很多网路上的资讯都过时很快。希望能帮到你。
      顺便谢谢博主,这个编码方式的问题也困扰我有段时间了。

      刪除
    3. 感謝你的補充~
      我可能真的太久沒使用vs code(目前仍以vim為主
      版本更新速度頻繁實在是有好有壞,已補上此篇使用的參考版本

      刪除

^ Top