2013-04-10 46 views
1

我需要通過HTTP發送短信Post with一些特殊字符,如「caiò」Hwo可以得到Encoding.GetEncoding(「iso-8859-1」)十六進制代碼?

所以,用我的代碼,我嘗試在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

我不確定你在這裏試圖做什麼,但iso.GetString(解碼)和iso.GetBytes(編碼)相互抵消。 – 2013-04-10 18:36:23

+0

謝謝你的幫助。你知道嗎,我怎樣才能採取特殊字符ISO-8859-1十六進​​制代碼? – 2013-04-10 18:57:36

+0

我可能無法做到這一點,但如果你用Body(我假設它是一個普通的C#(Unicode)字符串)和你的UrlParameter應該得到什麼的例子來增加你的問題,然後看起來像。 – 2013-04-10 20:18:16

回答

1

首先,對字符串進行編碼並對其進行解碼僅僅是一種毫無意義的往返行爲,並且最壞的情況下會導致數據丟失。

Uri.EscapeDataString總是correctly編碼爲UTF-8。任何服務器都應該支持。

你可以嘗試HttpUtility.UrlEncode它接受的編碼參數:

Encoding iso = Encoding.getEncoding("ISO-8859-1"); 
UrlParameter += "&data=" + HttpUtility.UrlEncode(Body, iso); 
-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支持,並允許我發送中文,日文,阿拉伯文和其他語言消息。