烦人的问题,也许你能帮我.试图通过API将数据传递到Wix.com上的"新产品"中),但其中一些产品包含本地标志.在服务器端成功处理Invoke-WebReport(下面的部分代码)后,我将获得不带变音符号的转换数据

try 强制执行字符集UTF-8,在$Body中我获得了适当的结果,

$headers  = @{
     "Content-Type"  = "application/json"
     "Authorization" = "$auth"
     "charset"       = "UTF-8"
            }
[...]
$obj = @{
    "product" = @{
                "name"        = [string]($product.name)
               }
[...]

$body = $obj | convertto-json -depth 3;
Invoke-WebRequest -Headers $headers -Uri $url  -method POST -body $body 

但在服务器上,所有的变音符号都消失了.我相信应该有一些可能性来改变它,但似乎需要在服务器端进行一些改变.如果我说错了,请纠正我.如果有任何帮助,我很感激. 非常感谢你的所有回答.

推荐答案

tl;dr

  • $headers哈希表中省略"charset"条目:

    • 媒体类型application/json使用UTF-8 by default.
    • 除此之外,charset属性是Content-Type条目的一部分,而不是单独的条目(例如'Content-Type' = 'text/plain; charset=utf-8')
  • ensure that UTF-8Windows PowerShell和PowerShell(Core)版本up to v7.3.x中使用,通过System.Text.UTF8Encoding显式获取要发布的JSON字符串的UTF-8编码,并将结果([byte[]]数组)传递给-Body参数Invoke-WebRequest:

Invoke-WebRequest -Headers $headers -Uri $url -Method POST -Body (
  [System.Text.Utf8Encoding]::new().GetBytes($body)
)

Background information:
  • Windows PowerShell100 up to v7.3.x中:

    • 这些版本使用ISO-8859-1作为default character encoding(v7.0-v7.3.x Select 性地默认为UTF-8,但仅在响应中,并且仅用于媒体类型application/json);ISO-8859-1与Windows-1252(最常见的"ANSI"编码)基本相同,只是它在0x80-0x9F代码点范围内缺少后者的字符,其中明显包括符号.

    • 改为post UTF-8,您将得到two options:

      • 仅当您没有同时使用-Header参数时:Use a 101 argument and append a 102 attribute;例如-ContentType 'application/json; charset=utf-8'

        • 这使得PowerShellautomatically根据指定的编码对[string]类型的-Body参数进行编码.

        • 请注意,在v7.3.x中,传递给-Header参数的哈希表中Content-Type条目的等效用法得到了not的支持;这在v7.4+中得到了修复

      • 或者,manually create a 100 array that contains the bytes that make up the UTF-8 encoding of your JSON string and pass it to 101,如顶部所示.

    • 请注意,101 requests等于may also have to prevent misinterpretation of responses;请参见this answer.

  • 在PowerShell(核心)v7.4+中,需要额外的工作100现在幸运的是Invoke-WebRequestInvoke-RestMethod中的consistent default.


Json相关问答推荐

使用jolt删除空对象

使用PowerShell解析文件并获取特定行的值

ArcGIS json到Geojson的变换

JOLT转换以根据条件删除json对象

nlohmann json:为什么我会得到一个解析错误?

Jolt-Json转换:通过引用标识符(而不是索引)设置值

json 字符串到 Postgres 14 中的表视图

德纳比可视化区域图表 Power BI

用powershell条件解析json文件的数组对象

在 Flutter 中将对象转换为可编码对象失败

将嵌套的 JSON 对象规范化为 Pandas 数据框

如何在不解析的情况下在javascript中同步包含JSON数据?

如何一次加载无限滚动中的所有条目以解析python中的HTML

Python - 如何将 JSON 文件转换为数据框

将错误消息作为 JSON 对象发送

如何在 swift 2 中获取 Alamofire.request().responseJSON 的结果值?

如何自动修复无效的 JSON 字符串?

MySQL Select JSON 字段属性具有值的位置

字符串格式 JSON 字符串给出 KeyError

将多个值存储在json中的单个键中