1

我需要通过 HTTP Post 发送带有“caiò”等特殊字符的 SMS

因此,使用我的代码,我尝试将我的字符串转换为 ISO-8859-1。

基本上,如果我的字符串在 ISO-8859-1 中转换,并且在其上调用 Uri.EscapeDataString() 方法,我应该使用“F2”十六进制代码代替“ò”。但我得到 %C3%A0 ,这是 UTF8 编码的十六进制代码。

     Encoding iso = Encoding.etEncoding("ISO-8859-1");   

                string StringBody = iso.GetString(iso.GetBytes(Body));

   UrlParameter += "&data=" + Uri.EscapeDataString(StringBody);
4

2 回答 2

1

首先,对字符串进行编码并立即对其进行解码,充其量只是一次毫无意义的往返,最坏的情况是会导致数据丢失。

Uri.EscapeDataString始终正确编码为 UTF-8。任何服务器都应该支持这一点。

您可以尝试HttpUtility.UrlEncode接受编码参数:

Encoding iso = Encoding.getEncoding("ISO-8859-1");  
UrlParameter += "&data=" + HttpUtility.UrlEncode(Body, iso);
于 2013-04-10T21:18:48.493 回答
-1

我相信文本 API 应该有 Unicode 支持...在您的末尾正确编码文本消息很重要...但是文本消息 API 也应该支持...支持 UNICODE 消息传递的 API 将完成工作...。

这是我在 PHP 中所做的...我不太愿意为其他语言编码,对此感到抱歉

if ($cmd['method'] == 'POST') {
$opts['http']['method'] = 'POST';
$opts['http']['header'] .= "\r\nContent-type: application/x-www-form-urlencoded"; 
$opts['http']['content'] = $post_data;
}

$context = stream_context_create($opts);

我使用 了提供 Unicode 支持并允许我发送中文、日文、阿拉伯文和其他语言消息的创新文本 API 网关。

于 2013-04-11T18:03:21.623 回答