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 |