какая это кодировка?

Если у меня есть HTML-страница с настройкой UTF-8. а затем я ввожу в форму китайские символы с кодировкой big5 и отправляю. какая кодировка на стороне сервера? он автоматически конвертируется в UTF-8? Или как это работает ?? Спасибо!

Дополнение1: Я действительно не уверен, почему браузер может решать, какую кодировку использовать? поскольку кодирование было сгенерировано IME. например: инструмент, который я использовал для ввода китайских иероглифов, верно?

дополнение2: если все так же, как то, что Майкл Мэдсен сказал в ответе ниже, то как asp.net может справиться с этим, чтобы независимо от того, как я ввожу символы в формы, он будет не повредить всегда, а jsp не может?


person MemoryLeak    schedule 02.09.2009    source источник


Ответы (2)


Браузер работает с Unicode - когда символы вводятся там, они сохраняются внутри как Unicode. Когда форма отправляется, она выводит символы в любой подходящей кодировке - обычно это кодировка страницы.

Если вы говорите о копировании / вставке из документа Big5, то он уже будет преобразован в Unicode, когда вставлен в буфер обмена - возможно, даже когда документ загружен, в зависимости от вашего редактора.

Если вы говорите об использовании некоторого IME для ввода символов, вопрос в некотором роде ошибочный, поскольку ваш IME должен работать исключительно с Unicode, и поэтому кодировка Big5 никогда не задействуется. Если это так, то в любом случае между преобразованием в / из Unicode есть промежуточный слой, поэтому, независимо от этой части, браузер никогда не знает исходную кодировку.

person Michael Madsen    schedule 02.09.2009
comment
Зачем ? система может автоматически преобразовать строку из big5 в utf-8? - person MemoryLeak; 02.09.2009
comment
да. Операционная система знает, как перейти от значений в каждой кодировке к фактическому символу, который будет представлен с использованием внутренней кодировки операционной системы, когда операционная система что-то с ним делает. Вот почему устаревшие приложения по-прежнему работают в Windows - Windows использует UTF-16 внутри, но устаревшие приложения, использующие кодовую страницу для конкретного языка, могут вызывать уровень совместимости, который в основном просто вызывает версии Unicode функций API после того, как текст, отправленный в функцию, был преобразован (текст, возвращаемый функцией API, также, конечно, преобразуется другим способом). - person Michael Madsen; 02.09.2009
comment
Поскольку браузер поддерживает Unicode, он может понимать и обрабатывать данные, предоставленные ему операционной системой, без преобразования. Как только ему предлагается отправить форму, он преобразует системную кодировку в кодировку, запрошенную сервером, и отправляет преобразованный текст. - person Michael Madsen; 02.09.2009
comment
Да, я не знаю, как вы можете это узнать, но если хорошо, не могли бы вы рассказать мне, как это доказать? - person MemoryLeak; 03.09.2009
comment
Взгляните на утилиту Windows AppLocale - microsoft.com/globaldev/tools/apploc.mspx - это позволяет запускать отдельное приложение, как если бы язык, отличный от Unicode, отличался от текущих системных настроек. Поскольку все приложения, не поддерживающие Unicode, используют одни и те же * A (не-Unicode) версии функций Windows API, в этих функциях должен быть код, который правильно обрабатывает разные кодовые страницы. Единственный способ сделать это даже при малейшем здравом уме - просто преобразовать ввод и вызвать версию * W (Unicode). - person Michael Madsen; 03.09.2009

Браузер может отправить свой пост в big5, если захочет, и сервер должен уметь это обрабатывать. Но что вы имеете в виду, говоря «Я ввожу китайские иероглифы в кодировке big5 в форме»? Когда вы вводите символы, браузер должен решить, какую кодировку использовать?

person Jon Skeet    schedule 02.09.2009
comment
На самом деле я действительно не уверен, почему браузер может решать, какую кодировку использовать? поскольку кодирование было сгенерировано IME. например: инструмент, который я использовал для ввода китайских иероглифов, верно? - person MemoryLeak; 02.09.2009
comment
Это просто позволит получить текстовые данные в браузере соответствующим образом. Важны текстовые значения, а не используемая кодировка. В зависимости от ОС, браузера и IME это могло произойти по-разному, но пока браузер знает, какие символы Unicode передавать, он может затем решить использовать любую кодировку, которая ему нравится (и поместить ее в заголовки). - person Jon Skeet; 02.09.2009
comment
мы можем видеть текстовые значения, но компьютер может распознавать только кодировку точно так же, как значение HEX, верно? поэтому, если вы введете символ с помощью IME и сгенерируете символ big5, тогда браузер автоматически переведет его в UTF-8? - person MemoryLeak; 02.09.2009