编码ISO-8859-15 powershell

编码ISO-8859-15 powershell,powershell,character-encoding,sms,Powershell,Character Encoding,Sms,我需要从powerShell脚本(使用smsmode api)发送SMS。我的问题是,我的信息编码应该是“ISO-8859-15”,即使编码在控制台中似乎有效,但当我收到短信时,编码是错误的 这是迄今为止尝试编码的代码,但我甚至不确定它是否正常工作。它确实会影响控制台中的输出,这是肯定的 $encoded = [System.Text.Encoding]::GetEncoding('iso-8859-15') $stringEncoded = $encoded.G

我需要从powerShell脚本(使用smsmode api)发送SMS。我的问题是,我的信息编码应该是“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]:默认值为活动代码页的编码。这在不同的系统上可能有所不同

您能发布到目前为止的代码吗?请提供代码示例。这是postParam中的消息。
$messageToSend
中字符串的初始编码是什么?它不起作用,但我的活动代码页的编码已经在“iso-8859-15”中$messageToSend是一个在代码页上硬编码的字符串。您可能需要在
Invoke Restmethod-ContentType'charset=“iso-8859-15”
中添加一个字符集属性。我几乎什么都试过了!我开始认为powershell无法在“ISO-8859-15”中编码。。。