Обнаружение кодовой страницы браузера - PullRequest
1 голос
/ 15 ноября 2010

У меня есть страница ASP.Net, где пользователь может ввести некоторый текст в TEXTAREA и отправить его на сервер. Этот текст будет сохранен в базе данных и будет представлен в приложении winform.

Как я могу убедиться, что winform application представляет точные символы, которые пользователь ввел в TEXTAREA.

То есть у меня есть потенциальная проблема, например, если пользователь вводит буквы специального языка, такие как Æ, Ø и Å, которые являются датскими?
Эти буквы имеют разные коды в зависимости от кодовой страницы, поэтому, насколько я могу видеть, мне нужно знать, на какую кодовую страницу вводит элемент управления TEXTAREA. Или я что-то здесь упускаю?

Я пытался найти материал по этому вопросу в сети, но трудно найти что-то, что решает эту проблему. Я обычно находил страницы, говорящие о том, какую кодовую страницу сервер должен использовать в браузере, чтобы правильно отображать отправленные данные.

Но мой вопрос идет другим путем, то есть от клиента к серверу.

Ответы [ 2 ]

1 голос
/ 24 января 2011

Вы также можете использовать HEBCI: вывод кодовой страницы на основе сущностей HTML , если вы действительно хотите быть уверены, что пользователи, отправляющие текст с помощью дерьмовых браузеров, не повредят вашу магистраль данных.

В Суть Вот как это работает:

Каждая кодовая страница имеет свой отпечаток пальца. Например, один объект "& ordm;" можно использовать для различения Большой тройки: ISO-8859-1 / Windows-1252 (= BA), MacRoman (= BC) и UTF-8 (= C2BA).

В форму вы просто добавляете скрытый ввод, содержащий эти отпечатки пальцев как сущности (например, & deg ;, & split; и & mdash;), а когда пользователи отправляют форму, вы просто проверяете возвращенные шестнадцатеричные значения и сравниваете их с вашим пальцем. таблица ЕСЛИ это не дает совпадения, только тогда продолжайте другие запасные решения.

Немного большая реализация прекрасно работает только с пятью кодовыми точками:

my @fp_ents = qw/deg divide mdash bdquo euro/;
my %fingerprints = (
  "UTF-8" => ['c2b0','c3b7','e28094','e2809e','e282ac'],
  "WINDOWS-1252" => ['b0','f7','97','84','80'],
  "MAC"          => ['a1','d6','d1','e3','db'],
  "MS-HEBR"      => ['b0','ba','97','84','80'],
  "MAC-CYRILLIC" => ['a1','d6','d1','d7',''],
  "MS-GREEK"     => ['b0','','97','84','80'],
  "MAC-IS"       => ['a1','d6','d0','e3',''],
  "MS-CYRL"      => ['b0','','97','84','88'],
  "MS932"        => ['818b','8180','815c','',''],
  "WINDOWS-31J"  => ['818b','8180','815c','',''],
  "WINDOWS-936"  => ['a1e3','a1c2','a1aa','',''],
  "MS_KANJI"     => ['818b','8180','','',''],
  "ISO-8859-15"  => ['b0','f7','','','a4'],
  "ISO-8859-1"   => ['b0','f7','','',''],
  "CSIBM864"     => ['80','dd','','',''],
 );
0 голосов
/ 15 ноября 2010

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

Подробнее см. этот ТАК ответ на связанный вопрос.

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