(Немного обновлено)
Надо сказать, я не очень разбираюсь в интернационализации с использованием PHP, и поиски действительно не дали ответов, которые я искал.
Мне нужно разработать надежный способ преобразования только "соответствующего" текста в Unicode для отправки в SMS-сообщении с использованием PHP (только временно, в то время как сервис переписывается с использованием С#) - очевидно, сообщения, отправленные в данный момент, отправляются в виде простого текста.
Я вполне мог бы преобразовать все в кодировку Unicode (в отличие от использования стандартной кодировки GSM), но это означало бы, что все сообщения будут ограничены 70 символами (вместо 160).
Итак, я предполагаю, что мой настоящий вопрос заключается в следующем: какой самый надежный способ определить требование, чтобы сообщение было закодировано в Юникоде, поэтому я должен делать это только тогда, когда это абсолютно необходимо (например, для символов, не входящих в латиницу)?
Добавленная информация:
Хорошо, так что я провел утро, работая над этим, и я все еще не продвинулся дальше, чем когда я начал (конечно, из-за моей полной нехватки компетентности, когда дело доходит до преобразования кодировки). Итак, вот пересмотренный сценарий:
У меня есть текстовые SMS-сообщения, поступающие из внешнего источника, этот внешний источник предоставляет мне ответы в виде обычного текста + символы с косой чертой в Unicode. Например, "отображаемый" текст:
Позвольте проверить öäü éàè אין תמיכה בעברית
Возвращает:
Позвольте тестировать
Теперь я могу отправить своему SMS-провайдеру в текстовом формате, GSM 03.38 или Unicode. Очевидно, что отправка вышеприведенного текста в виде открытого текста приводит к большому количеству пропущенных символов (они заменяются пробелами моим провайдером) - мне нужно принять во внимание то, что там есть. Я хочу сделать следующее:
-
Если весь текст находится в кодовой странице GSM 03.38, отправьте его как есть. (Все символы, кроме вышеприведенных иврита, входят в эту категорию, но их необходимо преобразовать.)
-
В противном случае преобразуйте его в Unicode и отправьте по нескольким сообщениям (так как ограничение Unicode составляет 70 символов, а не 160 для SMS).
Как я уже говорил выше, я нахожусь в тупике при выполнении этого в PHP (С# не был большой проблемой из-за некоторых простых встроенных функций преобразования), но вполне вероятно, что я просто упускаю очевидное здесь. Я также не смог найти никаких готовых классов преобразования для 7-битного кодирования в PHP - и мои попытки преобразовать строку самостоятельно и отправить ее мне показались тщетными.
Любая помощь будет принята с благодарностью.