win10下,cmd,power shell設置默認編碼為『UTF-8』?
想在cmd,power shell輸出『UTF-8』編碼的字元串,結果出問題了。
雖然,chcp 65001 可以暫時的解決,但是又想一勞永逸,設置cmd,power shell的默認編碼為『UTF-8』。不考慮bat腳本,試了一些方法,都不行。有能人,指點下迷津么?試過的方法:1)cmd,power shell的默認設置里都沒有『UTF-8』,這個選項。2)chcp 65001,就是改變當前cmd,power shell窗口的編碼到『UTF-8』。但是這個辦法不是永久的。退出,再進來就沒有了。
3)chcp 65001,之後修改字體,再退,下次打開就會默認為『UTF-8』編碼。這個也不行。無論是在『默認』,或是『屬性』里修改『字體』都不行。4)修改註冊表。位置:HKEY_CURRENT_USER/Console,下面有cmd,power shell兩個分開的文件夾。分別修改,或者添加一個『CodePage』為『65001』(十進位下)。同樣失敗。無論是『DWORLD』,或是『QWORLD』,都不行。
註:以下內容在非Windows平台上寫的,可能會有拼寫錯誤,如果有,請指正,我會儘快修正。
可以用Powershell的配置文件($PROFILE)來實現。
$PROFILE默認文件不存在,需要創建。
New-Item $PROFILE -ItemType File -Force
此時會在文檔下產生一個ps1文件,該文件會在Powershell啟動的時候載入。
在這個配置文件里加上一句:
[System.Console]::OutputEncoding=[System.Text.Encoding]::GetEncoding(65001)
當然,這裡就涉及到了Powershell的執行策略(Execution Policy)的問題,你需要設置允許 Powershell執行腳本,我是用的Unrestricted 策略:
Set-ExecutionPolicy Unrestricted
=============下面的內容很無聊的===============
分享一下自己電腦上的$PROFILE吧
# User profile
# Set encoding
[System.Console]::OutputEncoding = [System.Text.Encoding]::GetEncoding(936);
# Create frequent commands
New-Alias -Name vim -Value "D:Program FilesSublime Textsublime_text.exe";
New-Alias -Name vscode -Value "D:Program FilesVSCodeCode.exe";
$HOSTS = "$env:SystemRootsystem32driversetchosts";
Set-Location D:Scripts;
# Create administrative credential
$pwd = [System.Text.Encoding]::Unicode.GetString([System.Convert]::FromBase64String("base64_encoded_string"));
$secpwd = ConvertTo-SecureString -AsPlainText -String $pwd -Force;
$adm = New-Object System.Management.Automation.PSCredential("domainusername", $secpwd);
# Set a default password, for reseting account password
$defaultPassword = ConvertTo-SecureString -AsPlainText -String 1234@abcd -Force;
# Personalize console
$Host.UI.RawUI.WindowTitle = "Windows Powershell " + $Host.Version;
Write-Host -ForegroundColor Green "`n`t`t`tWelcome to Windows Powershell!`n";
# Enable AD management
Import-Module ActiveDirectory | Out-Null;
# Enable Exchange management
$exchange = New-PSSession -URI http://exchangeserver.domain.com/powershell -ConfigurationName microsoft.exchange -Credential $adm
Import-PSSession $exchange -DisableNameChecking | Out-Null
# Enable Skype for Business management
$sfb = New-PSSession -ConnectionUri https://sfbserver.domain.com/ocspowershell -Credential $adm
Import-PSSession $sfb -DisableNameChecking | Out-Null
# Define function to use Internet Explorer
function Use-InternetExplorer {
param(
# Parameter help description
[Parameter(Mandatory=$true)]
$Uri
)
$URL = "http://" + $Uri;
Get-Process -Name iexplore -ErrorVariable verIE -ErrorAction SilentlyContinue | Out-Null
if($verIE){
Start-Process C:Program Filesinternet exploreriexplore.exe
}
Start-Sleep -Seconds 1;
$navOpenInNewTab = 0x800
$App = New-Object -ComObject shell.application
$IE = $App.Windows() | Select-Object -Last 1
$IE.navigate($URL, $navOpenInNewTab)
}
function Exit {
Remove-PSSession $exchange
Remove-PSSession $sfb
Exit-PSSession
}
function Invoke-InternalWeb {
param (
# webname
[Parameter(Mandatory=$true)]
[string]$Name,
# domain
[Parameter(Mandatory=$false)]
[ValidateSet("domain1.com","domain2.com","domain3.com")]
[string]$Domain="domain1.com"
)
$URL = http:// + $Name + . + $Domain
Start-Process $URL -ErrorAction SilentlyContinue;
}
情況是這樣的 最近我也是被CMD的編碼煩的不行,既然樓上的大神已經提出了PowerShell的更改UTF-8的辦法 我就來說說CMD的更改辦法
進入正題:
按照原來的辦法 每次打開都要輸入「chcp 65001「 那麼其實只要每次打開時讓電腦自動輸入這串代碼即可
辦法
win+R --&> regedit --&> 計算機HKEY_LOCAL_MACHINESOFTWAREMicrosoftCommand Processor --&> 添加一個字元串值 (名稱為:autorun 數據為:chcp 65001)
問題解決
cmd
Windows build 15063.674
註冊表位置
ComputerHKEY_CURRENT_USERConsole\%SystemRoot%_system32_cmd.exe
修改CodePage變數的Data為fde9
powershell
同上,註冊表位置
ComputerHKEY_CURRENT_USERConsole\%SystemRoot%_SysWOW64_WindowsPowerShell_v1.0_powershell.exe
但只能在按住shift鍵,右擊當前目錄下啟動powershell有效
出現上面的選項時。
關閉所有PS或者CMD窗口,開一個新的
輸入 chcp 65001
然後在窗口標題欄打右鍵,在Defaults-Options里,把右上方的discard old duplicate勾上
再開一個PS/CMD,chcp看一看是不是解決了
Win10親測有效
以下對右鍵打開的窗口有效。
Cmd:
以下代碼存為 *.reg 文件:
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USERConsole\%SystemRoot%_system32_cmd.exe]
"CodePage"=dword:0000fde9
Powershell:
以下代碼存為 *.reg 文件:
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USERConsole\%SystemRoot%_System32_WindowsPowerShell_v1.0_powershell.exe]
"CodePage"=dword:0000fde9
修改註冊表。位置:HKEY_CURRENT_USER/Console,點擊Console在右邊顯示的設置項里修改或添加『CodePage』為『65001』(十進位下),『DWORLD』
推薦閱讀:
※Win10有哪些方便快捷的操作小技巧?
※Windows 10 體驗如何?
※知乎上的筆記本電腦幾乎都是蘋果筆記本?
※如何科學正確的安裝VS2015?
※能否通過微軟賬號直接恢復以前電腦存放在桌面上的文件?
TAG:UTF8 | 命令提示符cmd | PowerShell | Windows10 |