Строки байтов JavaScript и JQuery AJAX - PullRequest
0 голосов
/ 04 января 2012

Если у меня есть строка JavaScript (потенциально содержащая символы Unicode), каков наилучший способ преобразовать ее в строку байтов UTF-8, которую затем можно использовать для создания следующей полезной нагрузки для отправки на сервер через AJAX jQuery ?:

[4 байта, содержащие байты старшего байта (NBO) в следующей строке] [строка в кодировке UTF-8]

Во-вторых, как только вышеуказанная байтовая строка создана, как она может быть отправлена ​​на сервер без какого-либо вмешательства / искажения со стороны браузера? (Предпочтительно с использованием JJuery AJAX)

Заранее спасибо: -)

1 Ответ

0 голосов
/ 04 января 2012

Получение четырехбайтового заголовка должно быть достаточно простым:

var len = str.length;
var hdr = String.fromCharCode(
    (len >> 24) & 0xff,
    (len >> 16) & 0xff,
    (len >>  8) & 0xff,
    (len >>  0) & 0xff
);

, который можно затем добавить к оригиналу.

Однако обратите внимание, что Javascript использует UTF-16, а не UTF-8!Если у вас есть символы, которые используют более высокие кодовые точки, вам необходимо преобразовать их по отдельности в UTF-8, а затем учесть дополнительную длину в заголовке.

Отправка данных «без изменений» на сервертрудно, если вам не удастся отправить его как необработанные данные тела в сообщении POST.JSON-кодирование или URL-кодирование потребуют экранирования специальных символов, хотя в любом случае сервер должен иметь возможность тривиально восстановить исходный поток UTF-8.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...