我需要从powerShell脚本发送短信(使用smsmode api(。我的问题是我的消息的编码应该在"ISO-8859-15"中,即使编码似乎在控制台中有效,但当我收到短信时,编码是错误的。
这是到目前为止尝试编码的代码,但我什至不确定它是否正常工作。它确实会影响控制台中的输出,这是肯定的。
$encoded = [System.Text.Encoding]::GetEncoding('iso-8859-15')
$stringEncoded = $encoded.GetBytes($messageToSend)
$result = [System.Text.Encoding]::Default.GetString($stringEncoded)
$postParam = @{
accessToken = $smsToken
numero = $receivingNumber
message = $result
nbr_msg = 1
}
$reponse = Invoke-RestMethod -Method Post -Uri $resourceToSendSMS -Body $postParam
有谁知道如何解决这个问题或问题到底在哪里?
谢谢!
您可以执行以下操作:
$dstEncoding = [System.Text.Encoding]::GetEncoding('iso-8859-15')
$srcEncoding = [System.Text.Encoding]::Default
$result = $dstEncoding.GetString([System.Text.Encoding]::Convert($srcEncoding,$dstEncoding,$srcEncoding.GetBytes($messageToSend)))
基本上,您将当前编码字符的字节转换为目标编码。最后,您需要获取转换后的字节的字符串。
问题是,如果您的默认编码不支持$messageToSend
中已有的所有字符,即使编码正确,数据也不会正确。因此,这确实取决于$messageToSend
是如何创建的。
[System.Text.Encoding]::Default
是活动代码页的编码。这可能因不同的系统而异。