C#使用UTF8编码发送unicode短信

时间:2015-07-05 11:58:05

标签: c# php unicode utf-8

我正在使用 http api 发送短信。我有一个以下的PHP代码发送 unicode短信

<?php 
$api_key = 'XXXXXX';
 $contacts = '97656XXXXX,98012XXXXX';
 $from = 'DEMO';
 $sms_text = 'Hindi - हिंदी , Chinese - 痴呢色 ,Russian - руссиан';
 $encoded_text = utf8_encode($sms_text);
 $message = urlencode($encoded_text);

 $api_url = "http://www.example.in/app/smsapi/index.php?key=".$api_key."&campaign=1&type=unicode&contacts=".$contacts."&senderid=".$from."&msg=".$message; 

//Submit to server

$response = file_get_contents( $api_url);
 echo $response; 
?>

Php代码正确发送消息。现在我想使用c#发送相同内容。我尝试了以下代码。

WebClient objClient = new WebClient();
string baseurl = SystemConfiguration.GetSendSMSURL();            
byte[] utfByte = Encoding.UTF8.GetBytes(message);
baseurl = string.Format(baseurl, recipientMobileNumber, HttpUtility.UrlEncode(utfByte));
Stream data = objClient.OpenRead(baseurl);
StreamReader reader = new StreamReader(data);
string s = reader.ReadToEnd();
data.Close();
reader.Close();

但它无法正常工作。我在Unicode字符的短信中收到?????。基本上我试图在c#中转换php代码。有人能告诉我在c#中我做错了吗?

1 个答案:

答案 0 :(得分:0)

我想

  • php代码正确发送消息
  • var options = [ {label: 'Option 1', title: 'Option 1', value: '1'}, {label: 'Option 2', title: 'Option 2', value: '2'}, {label: 'Option 3', title: 'Option 3', value: '3'}, {label: 'Option 4', title: 'Option 4', value: '4'}, {label: 'Option 5', title: 'Option 5', value: '5'}, {label: 'Option 6', title: 'Option 6', value: '6'} ]; $('#example-dataprovider').multiselect('dataprovider', options); var selectconfig = { enableFiltering: true, includeSelectAllOption: true }; $('#example-dataprovider').multiselect('setOptions', selectconfig); $('#example-dataprovider').multiselect('rebuild'); 也包含在C#中的SMS网址中。 (它不在您的代码示例中。)

如果这一切都是真的,我建议您尝试直接在消息上使用HttpUtility.UrlEncode,而不是先将其转换为type=unicode数组。 byte[]已经是C#.NET中的unicode。

string