我目前正在构建一个使用Nexmo向用户发送短信的应用程序。 但我遇到了一些消息编码问题。 可能值得一提;我正在使用prawnsalad/Nexmo-PHP-lib library来连接他们的API。
160个字符的简单文本消息分为3个单独的消息。根据Nexmo的支持,这是由消息的编码引起的。因此,为了向我提供更多信息,我收到了有关编码的以下信息:
每封邮件的最大字符数取决于编码: - 用于7位编码的160个字符(例如Latin-1/9和GSM8) - 用于8位编码的140个字符(二进制) - 用于16位编码的70个字符(Unicode)
每个连接消息的最大字符数取决于 编码: - 7位编码的153个字符(例如Latin-1/9和GSM8) - 用于8位编码的134个字符(二进制) - 16位编码的67个字符(Unicode)
当我使用7BIT编码( mb_convert_encoding('message','7bit'))时,整个消息将作为单个文本消息发出...但是“é”,“è等字符“,”“”,“ù”将从邮件中删除。 必须有一种方法来包括这些字符,仍然发送消息为1消息,而不是3 ..对吗?但是如何?
我真的希望有人可以帮助解决这个问题,即使是Nexmo的支持也从这个编码问题中退了一步:p
答案 0 :(得分:2)
不幸的是,这些字符不包含在GSM8编码中,这里详细解释了这一点:http://www.clockworksms.com/blog/the-gsm-character-set/
如果您需要使用这些字符,则无法绕过8位编码,因此字符更少。
如果您的手机上的短信显示当前的字符使用情况,那么当您使用GSM8编码中未包含的字符时,字符数会发生巨大变化,也会发生同样的情况。