5

我想你们中的一些人有使用 Clickatell 的经验。我的问题是:当我使用法语或西班牙语字符(URL 编码)通过他们的 http api 发送消息时,它们不会显示在手机上(字符)。

我正在使用这个-指南-:http://support.clickatell.com/faq.php?mode=view_entry&kbid=121&kbcat=26

我已经用几部手机对其进行了测试,它们都显示相同:“a va! mon l ve mi ni a?” 应该是“ça va! mon élève mi niña?” (或类似的东西)

不幸的是,他们的支持不是很具体(对我来说),我现在有点困惑,这就是我得到的:

请参阅:http ://www.dreamfabric.com/sms/default_alphabet.html

此后,请根据上述标准对您的 text= 参数进行 URL 编码,以使您的法语字符在您的手机上正确显示。

4

4 回答 4

7

基本上,对于 SMS,您有两种发送文本的选项:使用GSM 03.38中指定的“默认字母”或使用 Unicode。

默认字母表是大多数西方国家发送 SMS 的常用方式,因为它为该地区的语言提供了可接受的子集。它是 7 位编码,因此您可以在 140 个可用字节中容纳最多 160 个字符。“最多”,因为这种编码使用了几个表。您可以通过在字符前加上转义符 (0x1B) 来访问扩展表中的字符。因此,如果您主要使用第一个表,则 7 位编码可以节省空间。

另一种选择是使用 Unicode(特别是 UCS-2)。显然,这为您提供了更广泛的字符集,但以空间为代价:每个字符使用两个字节,这种编码使您有 70 个字符的限制。

我不能代表 Clickatell,因为我从未使用过它们,但一些提供商为您提供了一个抽象 API,让您可以使用流行的编码,例如 ISO-8859-1(“latin-1”)。在某些时候,这仍然被重新编码为 7 位默认字母表。甚至可以应用一些映射规则,例如使用“è”而不是“é”,因为前者看起来几乎相同并且在默认字母表中。当然,如果您想完全控制内容,那么您需要使用 API 来传输以 GSM 默认字母表编码的文本。

于 2010-11-30T23:32:00.200 回答
2

这是一些解决方法。所有带有 '^' 的字符都将替换为常规字母:

$message = 'éàçùêâôûîï';
$message = urlencode(utf8_decode($message));

收到的短信将如下所示:

éàcùeaouii
于 2013-11-05T11:10:51.450 回答
0

我建议使用拉丁语 1编码,可能不是 100%,但它是最接近的。 http://www.w3schools.com/PHP/func_string_htmlentities.asp

于 2010-11-29T15:58:58.417 回答
0

实际上,我只使用 $message = utf8_encode($cvPath); //$cvpath 表示 url。它可以工作成功。感谢您的想法分享。^^

于 2017-02-07T09:00:09.470 回答