Как кодировать французские / испанские символы, чтобы использовать HTTP-API Clickatell?
Я думаю, что некоторые из вас имеют опыт работы с Clickatell. Моя проблема: когда я отправляю сообщение через их HTTP API, используя французские или испанские символы (кодирование URL), они не отображаются (символы) на телефоне.
Я использую этот -guide-: http:// support.clickatell.com /faq.php?mode=view_entry&kbid=121&kbcat=26
Я уже проверил это на нескольких телефонах, и все они показывают то же самое: "va! Mon l ve mi ni a?" Это должно быть "ça va! Mon élève mi niña?" (или что-то похожее)
К сожалению, их поддержка не совсем конкретна (для меня), и я немного растерялся, вот что я получил:
Пожалуйста, смотрите: http://www.dreamfabric.com/sms/default_alphabet.html
После этого, пожалуйста, URL Кодируйте ваш параметр text= в соответствии с вышеуказанными стандартами, чтобы ваши французские символы правильно отображались на вашем телефоне.
4 ответа
В основном с помощью SMS у вас есть два варианта отправки текста: либо используйте "алфавит по умолчанию", указанный в GSM 03.38, либо используйте Unicode.
Алфавит по умолчанию - это обычный способ отправки SMS в большинстве западных стран, поскольку он предлагает приемлемый набор языков для этого региона. Это 7-битная кодировка, поэтому вы можете поместить до 160 символов в 140 доступных байтов. "До", потому что эта кодировка использует несколько таблиц. Вы можете получить доступ к символам в таблицах расширений, поставив перед ними префикс escape(s) (0x1B). Таким образом, 7-битное кодирование экономит место, если вы в основном используете первую таблицу.
Другой вариант заключается в использовании Unicode (в частности, UCS-2). Очевидно, что это дает вам гораздо более широкий набор символов, но за счет места: используя два байта для каждого символа, эта кодировка оставляет вам ограничение в 70 символов.
Я не могу говорить за Clickatell, поскольку я никогда не использовал их, но некоторые провайдеры предлагают вам абстрактный API, который позволяет вам использовать популярные кодировки, такие как ISO-8859-1 ("latin-1"). В какой-то момент это все еще перекодируется в 7-битный алфавит по умолчанию. Могут быть применены даже некоторые правила отображения, например, используйте "è" вместо "é", потому что первое выглядит почти так же и находится в алфавите по умолчанию. Конечно, если вы хотите иметь полный контроль над контентом, вам нужно использовать API, который позволяет передавать текст, закодированный в алфавите GSM по умолчанию.
Вот какое-то решение. Все символы с '^' будут заменены обычной буквой:
$message = 'éàçùêâôûîï';
$message = urlencode(utf8_decode($message));
Полученное SMS будет выглядеть так:
éàcùeaouii
На самом деле я использую только $message = utf8_encode($cvPath); //$cvpath, что URL. это может работать успешно. Спасибо за вашу идею обмена. ^^
Я бы посоветовал использовать кодировку Latin 1, возможно, она не будет на 100 процентов, но она будет ближайшей к вам. http://www.w3schools.com/PHP/func_string_htmlentities.asp