Command Prompt / Windows Powershell 預設使用UTF-8 編碼 ...
文章推薦指數: 80 %
此文主要協助各位調整Command Prompt / Windows Powershell 預設使用UTF-8 編碼,有興趣就往下看吧! 本篇目錄[隱藏]. 前言; 臨時修改; 永久修改. Command ...
初探Oracleexp&imp指令使用方式
FluentInterface|一種程式碼”寫作”風格
此文主要協助各位調整CommandPrompt/WindowsPowershell預設使用UTF-8編碼,有興趣就往下看吧!
本篇目錄前言臨時修改永久修改CommandPromptWindowsPowershell結尾
前言
相信每個工程師應該都會碰到需要下指令的時候,但多少都會碰到中文亂碼這件事,這時就會準備直接打開瀏覽器搜尋“XXXX中文亂碼”等關鍵字,而且這種問題好像比較多都是華人會碰到,畢竟多數程式在設計就會是以UTF-8編碼為主,因其受眾也比較多的關係。
DefaultCodePage
所以今天就來談談Win10環境下,如何調整CommandPrompt/WindowsPowershell預設使用UTF-8編碼。
...
臨時修改
>chcp65001
僅調整當下Process(CommandPrompt/WindowsPowershell)的字碼頁(CodePage)為65001。
CodePage65001nowactived
...
永久修改
CommandPrompt
💭在命令提示視窗(CommandPrompt)顯示UTF-8內容
上文中有關davidhcefx的回覆解法,的確可以讓CommandPrompt預設UTF-8編碼,而不用每次都還要改字碼頁,下面就稍微圖解一下:
Windows搜尋regedit前往HKEY_LOCAL_MACHINE\Software\Microsoft\CommandProcessor該位置於第二點提到之位置底下新增字串值,數值名稱為Autorun,數值資料為chcp65001>nul
此時再次創建一個新的Process,預設字碼頁就是65001了。
CodePage65001nowactived
WindowsPowershell
如果WindowsPowershell要預設使用UTF-8編碼相比於CommandPrompt就複雜得多…畢竟微軟出品(´_ゝ`)
💭UsingUTF-8Encoding(CHCP65001)inCommandPrompt/WindowsPowershell(Windows10)
上文有比較詳細的討論,下面這邊就稍微圖解一下:
確認[console]::OutputEncoding、[console]::InputEncoding、$OutputEncoding這些變數確認$PROFILE變數新增Microsoft.PowerShell_profile.ps1至第二點提到之位置C:\Users\UserName\Documents\WindowsPowerShell底下Microsoft.PowerShell_profile.ps1內容如下:$OutputEncoding=[console]::InputEncoding=[console]::OutputEncoding=[Text.UTF8Encoding]::UTF8
此時再次創建一個新的Process,預設字碼頁就是65001了。
CodePage65001nowactived
回過頭來看PowerShell為什麼可以透過Profile檔案來客製化Process環境?其實也沒有什麼特別的原因,答案盡在PowerShell官方文件AboutProfiles,它設計上本來就可以利用Profile檔案來客製Process環境!
以上例來看,我僅侷限在當前的登入者呼叫PowerShell要去幫我先跑Profile檔案,若換了另一個登入者呼叫PowerShell就不會特別先去跑Profile檔案,因為另一位登入者並沒有照我們上述做了那些事情!
當然也可以預設讓所有登入者都去跑同一個Profile檔案,這部分就參考官方文件囉~
...
不過還有一件特別需要注意的事情,就是PowerShell在執行指令時要特別小心編碼問題!
💭PowerShell執行非.NET程式在輸出資料時要注意編碼問題
你可能會覺得很奇怪?阿不是我們都調整好UTF-8編碼了嗎?
我創建了一個名為test的文字文件檔且編碼為UTF-8,如下圖:
WTF
如果沒特別給encoding參數,就會顯示亂碼,我也是覺得蠻黑人問號(›´ω`‹)…
算是先留下一個洞,未來有再碰到類似問題,再回來解答吧~
結尾
感謝各位花時間看完此篇小文,如果本文中有描述錯誤,還請各位指教。
希望這篇文章可以解決掉大多數人對於CommandPrompt/WindowsPowershell預設使用UTF-8編碼的困擾哦◝(゚∀゚)◟
Views:
1,681
近期文章
HiHi各位,看這邊!
Builder建造者模式|複雜物件建構及樣貌分離
如何移除VisualStudio2019已授權金鑰
探討.NETHtmlEncode解決方案之間的比較
如何透過System.DirectoryServices來確認Windows使用者是否為啟用狀態!?
彙整
2021年6月 (1)
2020年12月 (1)
2020年10月 (1)
2020年7月 (1)
2020年6月 (1)
2020年5月 (2)
2020年4月 (2)
2020年3月 (8)
2020年2月 (2)
2020年1月 (7)
文章分類
.NET(1)
.NETCore(4)
.NETStandard(1)
API設計模式(1)
CommandPrompt(1)
IIS(1)
Oracle(4)
VisualStudio(3)
WindowsPowershell(1)
單元測試(1)
未分類(1)
瀏覽器擴充功能(1)
物件導向設計原則(5)
軟體設計原則(2)
標籤ActiveDirectory
ActiveDirectoryServiceInterface
Chrome擴充功能
Cross-siteScripting
HtmlEncode
JMeter
SOLID原則
WinNT
WorkerService
元件
剖面導向程式設計
創建型模式
加密
單元測試
壓力測試
工具
微軟
指令
插件
故障排除
物件導向
移轉
程式碼可讀性
程式覆蓋率
網站開發
解密
資料保護API
資料存取
錯誤處理
錯誤訊息
本網站透過使用Cookies記錄與存取您的瀏覽使用訊息,當您使用本網站時,即表示您同意Cookies技術支援。
我們也不會將您的任何Cookies數據分享他人或出售!我同意並關閉
延伸文章資訊
- 1如何寫批次檔自動big5 轉utf-8 檔案格式 - iT 邦幫忙
譬如設定好 SourcePath: D:\1 DestinationPath: D:\2. Encoding:utf8. 執行完結果就產出在D:\2. 小弟完全沒寫過powershell 有試著...
- 2PowerShell 中文亂碼問題(Big5 / Big-5 / UTF8 / UTF ... - Dino9021
https://docs.microsoft.com/zh-tw/powershell/module/microsoft.powershell.core/ ... $PSDefaultParam...
- 3PowerShell 輸出結果編碼問題 - 黑暗執行緒
之前研究PowerShell 中文編碼問題有個結論- Windows 10 內建PowerShell 5.1,在中文版Windows 預設用BIG5 編碼,PowerShell 6.0 之後會預...
- 4關於字元編碼- PowerShell - Microsoft Learn
如果您需要在腳本中使用非Ascii 字元,請使用BOM 將它們儲存為UTF-8。 如果沒有BOM,Windows PowerShell將腳本誤譯為在舊版「ANSI」 字碼頁中編碼。
- 5分享幾個在Windows 與Linux 常見的編碼問題與解決方案
看到上述這麼多支援的編碼不同,而跙Windows PowerShell 5.1 以前的版本竟然沒辦法指定UTF8 (No BOM) 的輸出,實在母湯!👎.