我需要在我的Android应用中发送包含JSON的短信。这是代码:
SmsManager sms = SmsManager.getDefault();
String message = "{\"phone\":\"9999-9999\"}";
sms.sendTextMessage(phoneNumber, null, message, null, null);
我测试了一些手机,其中大部分都收到了正确的信息:
{"phone":"9999-9999"}
但是有一个型号(LG G2 Mini)更改了' {'收到短信时的字符:
ä"phone":"9999-9999"ñ
有人知道它为什么会发生吗?
任何提示都会非常有用,
由于
答案 0 :(得分:2)
SMS有特殊的字符集,请参阅维基百科的这个链接:https://en.wikipedia.org/wiki/GSM_03.38
手机上出现错误的 {和} 字符位于基本字符集扩展中。尝试其他字符,如€, | ,] 等。如果这些字符在您的手机上也不起作用,我认为您的问题与此charset扩展程序有关。
扩展中的字符需要使用0x1B(SMS中的转义字符)进行转义。这只是一个猜想,也许逃避可能存在问题。
答案 1 :(得分:0)
看起来LG G2 Min没有正确实施3GPP TS 23.038。
SMS使用不同的字符集。最常用的是GSM 7位默认字母表。它以7位编码大多数美国和一些欧洲语言使用的常用字符和特殊字符。某些特殊字符(^ {} \< [〜]€)不适合此7位表。转义字符切换到GSM 7位默认字母扩展表,其中包含上述特殊字符。这些字符是两个7位字符,ESC和代码的代码。 “{”。
如果可能,您可以尝试使用Unicode。您可以通过在消息中使用不属于7位GSM字符代码及其扩展表的Unicode字符来强制使用Unicode。