将字符串编码并解码为不变文化

时间:2013-04-12 04:57:42

标签: c# decode encode cultureinfo

我有一个隐藏字段,我在其中存储以字符串格式存储用户输入和代码生成的值。由于字符串可能包含超链接等我在将其放入隐藏字段之前使用HTmlEncode并用于在我从隐藏字段中检索时解码该值。            如果用户输入包含法语字符,则代码将崩溃。如何编码包含链接,法语和其他文化字符的字符串。  我收到以下错误

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

2 个答案:

答案 0 :(得分:3)

嗯..如果您正在使用c#,那么这是我的尝试..

将整个HTML文档编码为Base64字符串,然后使用URLEncode。

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

然后URLEncode(encodedText)

这可以通过HTTP成功传输为POST而不会出错!

现在,如果您需要将其存储在隐藏字段中,而不是POST,只需将其输入隐藏字段即可。

希望有所帮助......

答案 1 :(得分:2)

将全球化代码标记为:

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

进一步按照这个答案,您将了解这些字符串的编码 - 解码:

Getting U+fffd/65533 instead of special character from Query String