【发布时间】:2016-09-07 19:04:03
【问题描述】:
我正在使用 Clickatell REST API 发送 SMS。我需要发送一些在 GSM 03.38 标准中都可用的特殊字符(如 Ä)(以及在 latin-1 中)。所以,我不想使用 unicode。但是,无论我如何发送消息,我都没有得到我想要的。要么消息正确保存在 Clickatell 中,但设备上带有奇怪的符号,要么我对消息进行编码,然后在 Clickatell 中得到十六进制字母,而设备上什么也没有。在常见问题解答中有 HTTP API 的解决方案,但它对 REST API 没有帮助。我联系了支持人员,但我已经等了 3 天才得到答复。这里有人使用过 API 吗?
以下是我的一些不成功的尝试:
数据在 Clickatell 页面上正确显示,但在 SMS 中没有
string data = clickatellEncoding.GetString(memoryStream.ToArray());
StringContent stringContent = new StringContent(data, clickatellEncoding,
jsonContentType
Clickatell 页面上的十六进制字母,未收到短信
byte[] utfBytes = utf8.GetBytes(data);
byte[] clickatellBytes = Encoding.Convert(utf8, clickatellEncoding, utfBytes);
data = clickatellEncoding.GetString(clickatellBytes);
StringContent stringContent = new StringContent(data, clickatellEncoding),
jsonContentType);
我还自己写了一个从 utf-8 到 GSM 03.38 的转换器,结果还是 Clickatell 页面上的十六进制字母没有短信。
还有什么我可以尝试的想法吗?
Clickatell 编码是 latin-1。 所以,理论上我应该用 latin-1 发送所有内容,它应该可以工作......
【问题讨论】:
标签: c# encoding sms sms-gateway clickatell