2010-07-12 2 views
1

Мне нужно преобразовать строку из текстового поля в байты. Как я могу это сделать?jQuery - Как преобразовать строку из текстового поля в байты?

Причина: текст на текстовом поле будет отправлен SMS клиенту, и я ограничен текст 160chars, но если я ставлю специальные символы, как  @ € £ ‰ ¶ ÷ ‰‰ € £ @ будет больше 256 байтов (это размер смс).

Так что мне нужно удалить из 256 преобразованного текста в байты и преобразовать результат в нормальную длину символов.

Пример:

var charsleft = toChars(256 - toBytes(mystring)); 

EDIT:
ПРИЧИНА быть на Javascript: у меня есть строка сказать что-то вроде этого "XXX символов осталось"

ответ

2

Сделай ServerSide с языком, который вы предпочитаете. Сценарий Java/ECMA действительно плохое место для таких операций. Это уже беспорядок с character encoding, так что сделайте себе одолжение и пропустите хлопот с content-types и прочее. Отправьте строку как UTF8 (например) на ваш сервер и выполните там работу.

+0

я не могу, он должен быть с JQuery, вся моя страница на Ajax, а все данные обрабатываются стороне клиента. Если я сделаю это на стороне сервера, будет немного неприятно -.- – CuSS

+0

Что? Нет, отправка SMS с веб-страницы будет «неприятной», как вы выразились. Используйте jQuery для отправки текстового поля ** в виде текста ** на сервер и отправьте SMS-сообщение серверу. Серьезно, не делайте этого от клиента. –

+0

Текст SMS - это не единственное, что он отправляет, он отправляет номера клиентов и т. Д., Ответ будет создавать изображения для обнаружения, если sms был отправлен или нет. Если у sms слишком много символов, что я говорю пользователю? если я поставлю это на стороне сервера, мне нужно создать другое событие для вызова предупреждений с сервера на странице ... – CuSS

0

Какая система вы используете для отправки СМС из jQuery? Я подозреваю, что это будет через HTTP-запрос, и в этом случае служба должна сделать для вас кодировку. В некоторых случаях есть символы, которые не представлены в наборе символов GSM, и в других случаях, когда символы должны быть представлены как «экранированная пара» байтов.

Документация для службы, которую вы используете, должна быть в состоянии сообщить вам о правильном форматировании тела SMS.

Например: http://www.bulksms.com/int/docs/eapi/submission/character_encoding/

Полное раскрытие: я работаю на BulkSMS

+0

http-запрос будет отправлен на мои серверы, они будут оценивать клиента, если у него есть счета для оплаты и т. д., а затем, если sms подтвердил, отправит sms через наш api bulksms servers;) (я ваш клиент) – CuSS

+0

Затем я предлагаю, чтобы ваш курс действий состоял в фильтрации символов, которые не могут быть отправлены через стандартные 7-битные сообщения. Вы можете сделать это на стороне клиента, чтобы помочь пользовательскому интерфейсу, но вы действительно должны также делать это на стороне сервера.Любые символы в теле сообщения, которые являются частью расширенной кодировки GSM, должны быть экранированы в соответствии с документами. В противном случае вам придется отправлять сообщения в Юникоде, но это означает более сложную задачу и уменьшенную длину сообщения. – ptomli

+0

Можете ли вы дать мне свой контакт по электронной почте? имеет ли ваша EAPI эта функция? Я отредактировал мой вопрос. спасибо – CuSS