Use Powershell to import website with Chinese domain

狂风中的少年 提交于 2020-12-06 17:03:36

问题


I’m trying use PowerShell to add website from xml file.

When I just use CMD command

appcmd  add site /in < test.xml

The binding of website is 「測試.com.tw」and everything be fine.

But when I use Powershell

Get-Content test.xml | appcmd add site /in 

The binding will be 「???.com.tw」

Even if I change chcp to 65001 or use “-encoding utf8” when get-content, but nothing change and still can’t correct import a website with Chinese domain.

My server is 2008 R2 and Powershell 1.0

Does anyone know how I can fix it?


回答1:


PowerShell uses the $OutputEncoding preference variable to determine the character encoding to use when sending data to external programs (such as appcmd) via the pipeline (what the external program receives via stdin, the standard input stream).

In Windows PowerShell, $OutputEncoding defaults to ASCII(!), meaning that only characters in the 7-bit ASCII are correctly sent, and all characters outside that range are replaced with literal ? characters.

You must set $OutputEncoding to match the encoding that appcmd expects when reading from stdin; according to your feedback, UTF-8 must be used:

$OutputEncoding = [System.Text.Utf8Encoding]::new($false) # BOM-less UTF-8

Get-Content test.xml | appcmd add site /in 

# Consider restoring the previous $OutputEncoding value

Note: The above assumes that Get-Content properly recognizes the encoding of test.xml when reading from it; if not, use its -Encoding parameter to specify the file's encoding explicitly.

Complementarily, when PowerShell reads output from external programs, it is the encoding stored in [Console]::OutputEncoding that determines how the output is decoded - see this answer.



来源:https://stackoverflow.com/questions/57949925/use-powershell-to-import-website-with-chinese-domain

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!