"一次"解決Console(主控台)輸出中文亂碼的編碼問題-Win10,Win11均適用
之前換新主機時,一開始設定作業系統完成的時候發現一個小問題,不明的原因鍵盤輸入法被預設為「法文」,後來自行換回「英文」之後沒有什麼問題,也就沒去管它了。但系統一直有個小問題,就是,Console主控台的輸出,只要是非英文,都會是亂碼呈現,還好,目前多數CLI,例如,Docker CLI等都是英文輸出,除了一個dotnet CLI。一直沒有想追的原因是,常輸入的參數就那些,想不起來線上查也方便,就一直放著。直到看到黑大的這一篇:「【茶包射手日記】PowerShell 串接 EXE 輸出中文變亂碼」,一行「[Console]::OutputEncoding
」立馬點出我的問題:
透過指令:[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
也確實立馬解決了亂碼問題。
但也立即產生新的問題。這行UTF8
的設定,只對當下這個PowerShell Sesssion有效,當我們關閉當前的PowerShell視窗後,就又回到我那個CodePage:437
的組態去了。
當下立即想起PowerShell的全域組態檔$PROFILE
,執行code $PROFILE
加入:
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
Import-Module posh-git
Import-Module oh-my-posh
Set-Theme Paradox
posh-git、oh-my-posh等設定,可參考:打造高富帥的POWERSHELL CORE命令列模式
測試過後,沒有問題。但現在我的環境中有PowerShell 5.x與PowerShell 7.x,需要在兩個$PROFILE
都進行同樣設定,又覺得不滿意。不知道有沒有一個「全域式」的組態,讓我一個設定將我的設定就固定到UTF-8
呢?
結果還真的有,但有一點點版本限制,需要Windows 10 version 1903之後的版本。開啟「設定」「語言」「系統管理語言設定」:
就這樣,我們就能到不用重覆設定,Console主控台不論是cmd.exe、PowerShell 5.x/7.x等等都能自動套用使用UTF-8
字碼的能力。這樣才符合我們標題"一次"的目標。
圖為Windows 10時抓取,此設定在Windows 11一樣的地方,一樣有效。
參考:https://newbedev.com/using-utf-8-encoding-chcp-65001-in-command-prompt-windows-powershell-windows-10
立刻馬上選一個用好不好,立馬是啥噁心的劣化中文
回覆刪除如果說:「立馬是啥噁心的劣化中文」那我讀的三國演義是什麼書?
刪除「
見張飛挺矛立馬於橋上,...
關公曰:「便是丞相鐵騎來,吾願決一死戰!」遂立馬於橋上望之。
劉豫州敗走漢津- 長板橋頭殺氣生,橫槍立馬眼圓睜。
」
你的中文學得有點糟糕欸
刪除高中國文沒學好嗎
刪除等你敢不用匿名,而且言之有物我們再進一步來討論。
刪除你貼的ppt說教育部字典找不到,那我找到的是什麼???
回覆刪除https://dict.revised.moe.edu.tw/search.jsp?md=4&word=%E7%AB%8B%E9%A6%AC
野人、獻曝、野人獻曝,都不一樣,你可以再查查。
回覆刪除謝謝你的文章!解決了我的問題!非常感謝~!!
回覆刪除=============
(看到留言認真回,舉例中的三個三國演義裡的「立馬」都是「騎在馬上」的意思哦)
他們其實是古文,只是被對面發陽光大,並不是對面的專門用語,你查教育部國語辭典(https://dict.revised.moe.edu.tw/search.jsp?md=1&word=%E7%AB%8B%E9%A6%AC&qMd=0&qCol=1)是有這樣的用法的。
刪除