我需要通过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);
答案 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支持,并允许我发送中文,日语,阿拉伯语和其他语言消息。