You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PowerShell脚本中正确处理API返回的Unicode字符

PowerShell调用API多语言返回值乱码解决方案

问题原因

你遇到的乱码是典型的编码解析错误:API返回的是UTF-8编码的多语言字符,PowerShell默认使用Windows系统编码(通常为GB2312、ISO-8859-1等)解析内容,导致俄语、法语等非ASCII字符显示异常。

解决方案

方案1:请求时直接指定编码(适用于所有PowerShell版本)

调用Invoke-RestMethod、Invoke-WebRequest等请求命令时,显式指定UTF-8编码解析返回内容:

  • PowerShell 7+ 直接添加请求参数即可:
$response = Invoke-RestMethod -Uri "你的API接口地址" -Method Get -ContentType "application/json; charset=utf-8"
  • Windows PowerShell 5.1 需手动解析返回的原始字节:
$response = Invoke-WebRequest -Uri "你的API接口地址" -UseBasicParsing
# 用UTF-8解码原始字节得到正确内容
$correctContent = [System.Text.Encoding]::UTF8.GetString($response.Content)

也可以用WebClient对象简化操作:

$webClient = New-Object System.Net.WebClient
$webClient.Encoding = [System.Text.Encoding]::UTF8
$correctContent = $webClient.DownloadString("你的API接口地址")

方案2:全局配置PowerShell默认编码(一劳永逸解决所有编码问题)

打开PowerShell配置文件(路径可通过$PROFILE命令获取),在文件末尾添加以下配置:

# 设置所有输入输出默认使用UTF-8编码
$OutputEncoding = [System.Text.Encoding]::UTF8
[Console]::InputEncoding = [System.Text.Encoding]::UTF8
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8

保存后重启PowerShell即可生效,后续所有请求和输出都会默认使用UTF-8编码解析内容。

特殊场景适配

如果API返回内容使用的是非UTF-8的特定编码(如俄语站点常用的KOI8-R、法语站点常用的ISO-8859-1),将上述代码中的[System.Text.Encoding]::UTF8替换为对应编码即可,示例:

# 适配KOI8-R编码的俄语接口
$correctContent = [System.Text.Encoding]::GetEncoding("KOI8-R").GetString($response.Content)

内容的提问来源于stack exchange,提问作者Anthony Hunter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 16:27:01