如何获取Encoding.GetEncoding(“iso-8859-1”)十六进制代码?

时间:2013-04-10 14:51:16

标签: encoding character-encoding sms sms-gateway

我需要通过HTTP Post发送短信,其中包含一些特殊字符,如“caiò”

因此,使用我的代码,我尝试在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);

2 个答案:

答案 0 :(得分:1)

首先,编码一个字符串并将其解码回来只是一个无意义的往返,最坏的情况下会导致数据丢失。

Uri.EscapeDataString始终correctly编码为UTF-8。任何服务器都应支持此功能。

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

Encoding iso = Encoding.getEncoding("ISO-8859-1");  
UrlParameter += "&data=" + HttpUtility.UrlEncode(Body, iso);

答案 1 :(得分:-1)

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

以下是我在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);

我使用Innovative Text API Gateway提供了Unicode支持,并允许我发送中文,日语,阿拉伯语和其他语言消息。