Может ли JavaScript обрабатывать двоичные данные? - PullRequest
0 голосов
/ 12 мая 2010

Позвольте мне описать мои вопросы в ситуационно-ориентированной форме:

Предположим, Internet Explorer по-прежнему является доминирующим веб-браузером (в Firefox есть документ для двоичной обработки):

XMLHttpRequest.responseText или XMLHttpRequest.responseXML в Internet Explorer хотят txt или xml / xhtml / html, но как насчет ответа сервера на xmlHttprequest с приложением / октетом MIME TYPE? Все ли символы в строке ответа будут меньше 256? (каждый символ этой строки <256)? Большое спасибо за прямой ответ, у меня нет среды веб-сервера, поэтому я не знаю, как это проверить. </p>

Поскольку использование txt или xml имеет проблему с кодировкой набора символов, и я не знаю, как обрабатывать # [[[узел CDDATA одного закодированного XML (например: UTF-8, ASCII, GB18030) ) с JavaScript, когда я получаюNodeText, docObj возвращает мне байт или декодированный символ? Если бы это был декодированный символ, который в соответствии с заголовком указывал charSet в httpresponse, все было бы неправильно.

Чтобы избежать путаницы с charSet, я бы хотел, чтобы сервер отвечал на данные октетов и принудительно кодировал данные строк как UTF-8, но другой charSet в двоичном формате.

Если ответ восьмеричный, я думаю, что браузер не будет пытаться декодировать ответ "txt".

Это странно? Или упустить понимание фундаментальных вещей?

РЕДАКТИРОВАТЬ: я думаю, что вопрос задается следующим образом: Может ли JavaScript безопасно обрабатывать строки, которые не кодируются в Unicode? Какие проблемы возникают при попытке сделать это?

РЕДАКТИРОВАТЬ: нет, нет, я имею в виду, что если http-header: content-type имеет значение «application / octet», Internet Explorer попытается декодировать его как (16-битная кодировка локальных настроек Unicode или Internet Explorer) при получении XMLHttpRequestobj. responseText использовать JavaScript? Или он (Internet Explorer) просто переносит каждый байт тела ответа как строку JavaScript, затем каждый символ в этой строке меньше или равен 256 (символ <= 256). </p>

Я говорю на языке Марса? К сожалению, если бы я был марсианцем, я бы приехал как турист без неясных вопросов. Однако я нахожусь в стране, которая делит по крайней мере одну собственность с Марсом: КРАСНЫЙ.

1 Ответ

1 голос
/ 12 мая 2010

Если я правильно понимаю ваш вопрос, короткий ответ: да, каждый байт будет содержать значение от 0 до 255 (то есть без знака). Это просто природа байтов, состоящих из 8 бит.

Но зачем тебе это? Какие двоичные данные вы хотите обработать с помощью JavaScript?

Только к вашему сведению, прочитайте Освоение Ajax, Часть 3. Расширенные запросы и ответы в Ajax :

Это позволяет определить […], если сервер попытается вернуть двоичный данные вместо HTML, текста или XML (которые все три гораздо проще процесс в JavaScript, чем двоичный данные).

(под Полезные запросы HEAD ).

Если вам интересно, я нашел эту статью с простым поиском в Google .

...