Как разместить данные формы на странице UTF-8 на странице Западной Европы (ISO) - PullRequest
0 голосов
/ 23 октября 2009

Мне нужно опубликовать форму на новом веб-сайте в кодировке UTF-8. Проблема в том, что мне нужно опубликовать его на устаревшем сайте, закодированном на западноевропейском (iso). Некоторые персонажи запутались в сообщении (например, датские специальные символы).

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

У меня есть jquery на клиенте, чтобы помочь с любыми возможными уловками кодирования.

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

Новый сайт работает под управлением asp.net mvc, а старое наследие - это классический asp (не asp.net), если это имеет значение (я надеюсь, что это не так, поскольку я действительно хотел бы обрабатывать вещи на стороне клиента) .

Ответы [ 3 ]

1 голос
/ 23 октября 2009

Вы можете контролировать кодировку, используемую в форме, независимо от кодировки страницы хостинга. Например,

  <form accept-charset="latin-1" ... >
1 голос
/ 23 октября 2009

IIUC, на самом деле не имеет значения, во что закодированы веб-страницы на старом сайте, так как форма будет на новом сайте. Важно то, что ожидает сервер от старого сайта. И если сервер ожидает, что данные будут отправлены в латинице-1, у вас есть только два варианта:

  1. изменить сервер, чтобы принимать данные в UTF-8 (возможно, под другим URL)
  2. убедитесь, что клиент отправляет данные на латинице-1

Поскольку вы исключили вариант 1, ваш единственный выбор - вариант 2 (но пересмотрите вариант 1). Для варианта 2 у вас снова есть выбор, один из которых заключается в использовании прокси, как вы предлагаете. Однако, вероятно, было бы лучше, если бы страница, содержащая форму, была закодирована в Latin-1 (несмотря на то, что остальная часть сайта была UTF-8). Это должно хорошо работать, если вы не хотите отображать на странице информацию не-латиницы-1 (например, текст на китайском языке). Вам просто нужно объяснить asp.net, что эта конкретная страница должна отображаться на латинице 1 (и веб-сервер должен отправлять соответствующий тип контента).

0 голосов
/ 29 октября 2009

Хорошо, поэтому мы завершили URL-кодирование данных перед отправкой на целевую страницу.

Это решило две проблемы, с которыми столкнулись другие решения: 1) дополнительная страница перехода / перехода для преобразования значений и 2) не переписывать большую часть старого унаследованного (который переносится) сайта для принятия UTF- 8

В любом случае мы помещаем логику отправки данных с внешнего сайта на устаревший сайт в плагин jquery, который обрабатывает любые элементы формы в форме, экранируя каждое значение перед отправкой формы - фактически для целевой / старой страницы требуются данные в GET формат, поэтому мы просто заканчиваем настройкой window.location на результирующую строку запроса - но я думаю, мы могли бы с таким же успехом отправить форму с обычным POST, если бы захотели.

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