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

欧洲区域环境下PowerShell字符串转UTF-8:处理Access读出的德语Stück

问题原因

你的编码转换逻辑方向错误。PowerShell 中所有原生字符串对象默认是UTF-16LE编码,不管是从Access数据库读取的Stück还是在ISE中直接输入的常量,都是标准的UTF-16格式字符串。你之前的操作是将UTF-16字符串按Windows-1252编码转成字节数组,再强行用UTF-8规则解码,自然会出现乱码。

正确实现代码

如果你需要得到你期望的Stück输出,只需要把编码转换的方向反过来即可:

# 原始输入字符串,和你从数据库拿到的内容一致
$Text1 = "Stück"

# 先将UTF-16字符串编码为UTF-8字节数组
$utf8Bytes = [System.Text.Encoding]::UTF8.GetBytes($Text1)
# 再将UTF-8字节数组按Windows-1252编码解码为字符串
$targetText = [System.Text.Encoding]::GetEncoding(1252).GetString($utf8Bytes)

# 输出结果为 Stück
$targetText

实际REST调用场景优化

如果你的最终目的是发起REST请求时传输UTF-8编码的内容,其实不需要手动做上述字符串转换,更稳妥的方案是直接传递UTF-8编码的字节数组给REST请求命令,避免中间字符串转码出现异常:

# 构造请求内容
$reqBody = @{
    itemName = "Stück"
} | ConvertTo-Json

# 直接将请求内容转成UTF-8字节数组
$utf8Body = [System.Text.Encoding]::UTF8.GetBytes($reqBody)

# 调用接口时指定charset=utf-8
Invoke-RestMethod -Uri "你的接口地址" -Method Post -Body $utf8Body -ContentType "application/json; charset=utf-8"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 20:30:05