繁体   English   中英

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

[英]C# Send unicode SMS using UTF8 encoding

我正在使用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#中哪里做错了吗?

我想

  • PHP代码正确发送消息
  • type=unicode也包含在C#中的SMS URL中。 (它不在您的代码示例中。)

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

baseurl = string.Format(baseurl, recipientMobileNumber, HttpUtility.UrlEncode(message));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM