Android应用发送包含错误字符的短信

时间:2016-08-19 17:50:36

标签: android sms

我需要在我的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"ñ

有人知道它为什么会发生吗?

任何提示都会非常有用,

由于

2 个答案:

答案 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。