使用Powershell导入中文域名网站
Use Powershell to import website with Chinese domain
我正在尝试使用 PowerShell 从 xml 文件添加网站。
当我只使用CMD命令时
appcmd add site /in < test.xml
网站绑定为「测试.com.tw」,一切正常。
但是当我使用 Powershell 时
Get-Content test.xml | appcmd add site /in
绑定将是「???.com.tw」
即使我在获取内容时将chcp改为65001或使用“-encoding utf8”,也没有任何改变,仍然无法正确导入中文域名的网站。
我的服务器是 2008 R2 和 Powershell 1.0
有人知道我该如何解决吗?
PowerShell 使用 $OutputEncoding
preference variable 来确定在通过管道(什么外部程序通过标准输入流 stdin 接收。
在WindowsPowerShell中,$OutputEncoding
默认为ASCII(!),意思是只正确发送7位ASCII中的字符,所有超出该范围的字符都替换为文字 ?
个字符。
您必须设置 $OutputEncoding
以匹配 appcmd
从 stdin 读取时期望的编码;根据您的反馈,必须使用 UTF-8:
$OutputEncoding = [System.Text.Utf8Encoding]::new($false) # BOM-less UTF-8
Get-Content test.xml | appcmd add site /in
# Consider restoring the previous $OutputEncoding value
注意:以上假设 Get-Content
在读取时正确识别 test.xml
的编码;如果不是,请使用其 -Encoding
参数明确指定文件的编码。
作为补充,当PowerShell 读取输出来自外部程序时,它是存储在[=20=中的编码] 确定输出的解码方式 - 请参阅 .
我正在尝试使用 PowerShell 从 xml 文件添加网站。
当我只使用CMD命令时
appcmd add site /in < test.xml
网站绑定为「测试.com.tw」,一切正常。
但是当我使用 Powershell 时
Get-Content test.xml | appcmd add site /in
绑定将是「???.com.tw」
即使我在获取内容时将chcp改为65001或使用“-encoding utf8”,也没有任何改变,仍然无法正确导入中文域名的网站。
我的服务器是 2008 R2 和 Powershell 1.0
有人知道我该如何解决吗?
PowerShell 使用 $OutputEncoding
preference variable 来确定在通过管道(什么外部程序通过标准输入流 stdin 接收。
在WindowsPowerShell中,$OutputEncoding
默认为ASCII(!),意思是只正确发送7位ASCII中的字符,所有超出该范围的字符都替换为文字 ?
个字符。
您必须设置 $OutputEncoding
以匹配 appcmd
从 stdin 读取时期望的编码;根据您的反馈,必须使用 UTF-8:
$OutputEncoding = [System.Text.Utf8Encoding]::new($false) # BOM-less UTF-8
Get-Content test.xml | appcmd add site /in
# Consider restoring the previous $OutputEncoding value
注意:以上假设 Get-Content
在读取时正确识别 test.xml
的编码;如果不是,请使用其 -Encoding
参数明确指定文件的编码。
作为补充,当PowerShell 读取输出来自外部程序时,它是存储在[=20=中的编码] 确定输出的解码方式 - 请参阅