Кодировать и декодировать строку для инвариантного языка и региональных параметров

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

A potentially dangerous Request.Form value was detected from the client (ctl00$ctl00$ContentPlaceHolder1$ContentPlaceHolder1$EmailHiddenField="...434] - [Exécuter la macro...").

person Manoj Nayak    schedule 12.04.2013    source источник
comment
Пожалуйста, добавьте код в свой вопрос и ошибку/исключение, которое вы получаете при сбое кода. (Или тот, кто проголосовал за вопрос, может сделать то же самое).   -  person Alexei Levenkov    schedule 12.04.2013


Ответы (2)


Ну.. Если вы используете С#, то вот моя попытка..

Кодируйте весь HTML-документ в строку Base64, а затем используйте URLEncode.

byte[] bytesToEncode = Encoding.UTF8.GetBytes(myHTMLDocAsString);
string encodedText = Convert.ToBase64String(bytesToEncode);

а потом URLEncode(encodedText)

Это может быть успешно передано по HTTP как POST без ошибок!

Теперь, если вам нужно сохранить его в скрытом поле, вместо POST просто введите его в скрытое поле.

Надеюсь, поможет..

person Hiren Pandya    schedule 12.04.2013

Используйте тег глобализации как:

<globalization requestEncoding="utf-8" responseEncoding="utf-8" culture="nb-no" uiCulture="no"/>

Далее следуйте этому ответу, вы узнаете, как кодировать-декодировать эти строки:

Получение U+fffd/65533 вместо специального символа из запроса Строка

person Freelancer    schedule 12.04.2013