我正在使用 Clickatell REST API 发送短信。我需要发送一些在 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 发送所有东西,它应该可以工作......