Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Json 错误:UTF-8字符格式不正确,可能编码不正确_Json_Excel_Powershell - Fatal编程技术网

Json 错误:UTF-8字符格式不正确,可能编码不正确

Json 错误:UTF-8字符格式不正确,可能编码不正确,json,excel,powershell,Json,Excel,Powershell,我有一个从Excel文件读取的PowerShell脚本。它存储来自特定单元格/列的数据,转换为JSON,然后通过REST将其发送到我的Wordpress安装 我遇到的问题是,当尝试使用从Excel获取的数据运行脚本时,它会显示错误 格式错误的UTF-8字符,可能编码不正确 #声明文件路径和工作表名称 $file=“P:\file.xlsx” $sheetName=“正在生产中” ############################################### #

我有一个从Excel文件读取的PowerShell脚本。它存储来自特定单元格/列的数据,转换为JSON,然后通过REST将其发送到我的Wordpress安装

我遇到的问题是,当尝试使用从Excel获取的数据运行脚本时,它会显示错误

格式错误的UTF-8字符,可能编码不正确

#声明文件路径和工作表名称
$file=“P:\file.xlsx”
$sheetName=“正在生产中”
###############################################
#                                             #
#EXCEL函数#
#                                             #
###############################################
#创建Excel.Application的实例并打开Excel文件
$objExcel=新对象-ComObject Excel.Application
$workbook=$objExcel.Workbooks.Open($file)
$sheet=$workbook.Worksheets.Item($sheetName)
$objExcel.Visible=$false
#计数最大行数
$rowMax=($sheet.UsedRange.Rows)。计数
#宣布起始位置
$rowName,$colName=1,1
$rowSignOff,$colSignOff=1,2
$rowReceived,$colReceived=1,3
$rowBuildStart,$colBuildStart=1,4
$rowBuildEnd,$colBuildEnd=1,5
$rowShipping,$colShipping=1,6
$rowBuiltBy,$colBuiltBy=1,7
$rowQA,$colQA=1,8
$rowCage,$colCage=1,9
$ROWCOMENT,$COLCOMENT=1,10
$rowStatus,$colStatus=1,11
$build=@()
#循环以获取值并存储它
对于($i=1;$i-le$rowMax-1;$i++)
{
$name=$sheet.Cells.Item($rowName+$i,$colName).Text
$signoff=$sheet.Cells.Item($rowSignOff+$i,$colSignOff).Text
$received=$sheet.Cells.Item($rowReceived+$i,$colReceived).Text
$buildstart=$sheet.Cells.Item($rowBuildStart+$i,$colBuildStart).Text
$buildend=$sheet.Cells.Item($rowBuildEnd+$i,$colBuildEnd).Text
$shipping=$sheet.Cells.Item($rowShipping+$i,$colShipping).Text
$builtby=$sheet.Cells.Item($rowBuiltBy+$i,$colBuiltBy).Text
$qa=$sheet.Cells.Item($rowQA+$i,$colQA).Text
$cage=$sheet.Cells.Item($rowCage+$i,$colCage).Text
$comment=$sheet.Cells.Item($rowcoment+$i,$colComment).Text
$status=$sheet.Cells.Item($rowStatus+$i,$colStatus).Text
$build+=[PSCustomObject]@{
name=$name
start=$buildstart
end=$buildend
by=$builtby
备注=$comment
}
}
###############################################
#                                             #
#邮政职能#
#                                             #
###############################################
$content=[PSCustomObject]@{
暂存_字段=@{
staging_repeater=$build
}
}
$json=$content | converttoJSON-Depth$([int32]::MaxValue)
调用RestMethod-Uri$Uri-Method POST-Headers@{Authorization=(“基本{0}”-f$base64AuthInfo)}-ContentType“应用程序/json”-Body$json
写入主机$json
#关闭excel文件
$objExcel.Quit()
Write Host$json
的输出如下

{
“暂存字段”:{
“登台中继器”:[
{
“名称”:“测试1”,
“开始”:“2016年12月19日”,
“结束”:“2017年1月9日”,
“发件人”:“JM”,
“注释”:”
},
{
“名称”:“测试2”,
“开始”:“2017年1月1日”,
“结束”:“2017年1月11日”,
“收件人”:“JC”,
“注释”:”
},
{
“名称”:“测试3”,
“开始”:“2017年1月17日”,
“结束”:“2017年2月1日”,
“发件人”:“JM”,
“注释”:”
}
]
}
}
将此粘贴到Postman并发送POST请求不会产生错误,并成功添加到我的WordPress站点

如果有帮助,完整错误如下

Invoke-RestMethod : {"code":"rest_invalid_json","message":"Invalid JSON body passed.","data":{"status":400,"json_error_code":5,"json_error_message":"Malformed UTF-8 characters, possibly incorrectly encoded"}} At L:\\Untitled1.ps1:98 char:1 + Invoke-RestMethod -Uri $uri -Method POST -Headers @{Authorization=("B ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-RestMethod], WebException + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeRestMethodCommand 来自Excel的数据似乎没有使用正确的字符编码。这就是我不知所措的地方。

我是个白痴


在excel文件中,“自动更正”已更改为“咖啡厅”,这是问题的原因。简单的重命名就解决了这个问题

我不知道它阻塞了什么值,但我会首先尝试找到错误的值,首先在所有地方使用“test”,然后逐个更改,直到抛出为止。一旦你确定了这样的领域,我会开始玩循环,以知道无效字段在哪一行。这正是我刚才尝试的-它确实是excel文档中Café上拾取的第一个$name变量,我最初没有发现。解决它很好,但如果你能以某种方式清理excel数据,那就更好了?!