我认为你们中的一些人有使用Clickatell的经验。我的问题是:当我使用法语或西班牙语字符(URL编码)通过他们的http api发送消息时,他们不会在手机上显示(字符)。
我正在使用此指南 - : http:// support.clickatell.com /faq.php?mode=view_entry&kbid=121&kbcat=26
我已经用几部手机对它进行了测试,它们都显示出相同的结果:“一个人!我的一个人?” 应该是“çava!monélèvemiiña?” (或类似的东西)
不幸的是他们的支持并不是很具体(对我而言),现在我有点困惑,这就是我得到的:
请参阅:http://www.dreamfabric.com/sms/default_alphabet.html
此后,请根据上述标准对您的text =参数进行编码,以便在您的手机上正确显示您的法语字符。
答案 0 :(得分:7)
基本上使用SMS,您有两种发送文本的选项:使用GSM 03.38中指定的“默认字母”或使用Unicode。
默认字母表是在大多数西方国家发送短信的常用方式,因为它为该地区的语言提供了可接受的子集。它是一个7位编码,因此您可以在140个可用字节中容纳160个字符。 “最多”,因为此编码使用多个表。您可以通过在字符前加上escape(s)(0x1B)来访问扩展表中的字符。因此,如果您主要使用第一个表,则7位编码可以保存位置。
另一种选择是使用Unicode(特别是UCS-2)。显然,这会给你一个更广泛的字符集,但代价是空间:每个字符使用两个字节,这个编码会让你有70个字符的限制。
我不能代表Clickatell,因为我从未使用它们,但是一些提供商为您提供了一个抽象API,让您使用流行的编码,如ISO-8859-1(“latin-1”)。在某些时候,这仍然被重新编码为7位默认字母表。甚至可以应用一些映射规则,例如,使用'è'而不是'é',因为前者看起来几乎相同,并且在默认字母表中。当然,如果您想要完全控制内容,那么您需要使用一个API来传输以GSM默认字母表编码的文本。
答案 1 :(得分:2)
这是一些解决方法。带有'^'的所有字符都将被常规字母替换:
$message = 'éàçùêâôûîï';
$message = urlencode(utf8_decode($message));
收到的短信将如下所示:
éàcùeaouii
答案 2 :(得分:0)
我建议使用Latin 1编码,可能不是百分之百,但它是你最接近的。 http://www.w3schools.com/PHP/func_string_htmlentities.asp
答案 3 :(得分:0)
实际上,我只使用$ message = utf8_encode($ cvPath); // $ cvpath表示网址。它可以成功。感谢您的想法分享。 ^^