я должен преобразовать строку от текстового поля до байтов. Как я могу сделать это?
Причина: текст на текстовом поле будет отправлен SMS клиенту, и я ограничил текст 160chars, но если я поместил специальные символы как @ ‰ €£ ¶ ÷ ‰‰ €£, это будет больше, чем 256 байтов (это - размер SMS).
Таким образом, я должен удалить от 256 преобразованный текст к байтам и преобразовать результат в нормальную длину символов.
Пример:
var charsleft = toChars(256 - toBytes(mystring));
Править:
ПРИЧИНА быть на JavaScript: у меня есть строка, говоря что-то вроде этого "XXX оставленных символов"
Сделайте это на стороне сервера на предпочитаемом вами языке. Сценарий Java / ECMA действительно плохое место для таких операций. Это уже беспорядок с кодировкой символов
, так что сделайте себе одолжение и забудьте о проблемах с типами содержимого
и прочим. Отправьте строку как UTF8
(например) на свой сервер и выполняйте там работу.
Какую систему вы используете для отправки SMS из jQuery? Я подозреваю, что это будет через HTTP-запрос, и в этом случае сервис должен выполнить кодирование за вас. В некоторых случаях есть символы, которые не представлены в наборе символов GSM, а в других случаях символы должны быть представлены как «экранированная пара» байтов.
Документация к службе, которую вы используете, должна содержать информацию о правильном форматировании тела SMS.
Например: http://www.bulksms.com/int/docs/eapi/submission/character_encoding/
Полное раскрытие информации: я работаю в BulkSMS