首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >编码ISO-8859-15 powershell

编码ISO-8859-15 powershell
EN

Stack Overflow用户
提问于 2019-10-08 22:21:05
回答 1查看 1.2K关注 0票数 0

我需要从一个powerShell脚本发送短信(使用smsmode api)。我的问题是,我的消息的编码应该是"ISO-8859-15“,即使编码似乎在控制台中工作,当我收到sms时,编码是错误的。

这是到目前为止尝试和编码的代码,但我甚至不确定它是否正常工作。它确实会影响控制台的输出,这是肯定的。

代码语言:javascript
复制
        $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

有没有人知道如何解决这个问题,或者问题具体在哪里?

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2019-10-08 23:05:54

您可以执行以下操作:

代码语言:javascript
复制
$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是活动代码页的编码。这在不同的系统上可能有所不同。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58288284

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档