【问题标题】:Replace characters in a string to fit browser, C#, From UTF8 encoding替换字符串中的字符以适应浏览器、C#、来自 UTF8 编码
【发布时间】:2011-11-21 19:23:32
【问题描述】:

我需要将字符 å、ä、ö 替换为浏览器友好的字符。例如 ä 应该变成 %E4。

我试过了奇怪的字符串 = Uri.EscapeUriString(weirdString); 但它不会将 åäö 转换为正确的符号。请帮忙?

编辑:试过这个:

ASCIIEncoding ascii = new ASCIIEncoding(); 
byte[] asciicharacters = Encoding.UTF8.GetBytes("vägen");
byte[] asciiArray = Encoding.Convert(Encoding.UTF8, Encoding.ASCII, asciicharacters);
string finalString = ascii.GetString(asciiArray);
string fixedAddrString = HttpUtility.HtmlEncode(finalString);

【问题讨论】:

  • "å" 是一个完美的浏览器友好字符。你想做什么/遇到什么问题?
  • 例如,我需要“dadelvägen”变成“dadelv%E4gen”。否则我会得到错误的 HTML 页面。
  • 你的意思是在 URL 中还是在 HTML 中?
  • 你得到的是什么而不是预期值?
  • 使用 HtmlEncode 我得到“vägen”。

标签: string browser utf-8


【解决方案1】:

试试 HttpUtility.HtmlDecode。 如果这也不起作用,你可以做一个简单的字符串。替换这个字符。

【讨论】:

  • 我认为他的意思是 HtmlEncode,我试过了,但是“vägen”的结果字符串变成了“vägen”,它应该是“v%E4gen”。
  • 它是我与 HtmlEncode 一起使用的。我怎样才能得到正确的字符串?
【解决方案2】:

如果您需要在页面上显示字符而不是 URL 的一部分,则应使用Server.HtmlEncode

var encodedString = Server.HtmlEncode(myString); 

HTML 编码确保文本在浏览器中正确显示,而不是被浏览器解释为 HTML。例如,如果文本字符串包含小于号 (),浏览器会将这些字符解释为 HTML 标记的左括号或右括号。当字符被 HTML 编码时,它们被转换为字符串 ,这导致浏览器正确显示小于号和大于号。


更新:

由于您使用的是 UTF-8,因此这些字符将转义为 UTF-8,而不是 ASCII。

在尝试转义之前,您需要使用 Encoding 类将字符串从 UTF-8 转换为 ASCII。也就是说,如果您确实希望出现 ASCII 值。

here

【讨论】:

  • 本应在 URL 中使用。
  • @mdc - 您需要在编码之前将字符串转换为 ASCII 字符串。
  • 无法正确地将其转换为 ASCII,这里有什么问题:(请参阅 OP,将代码粘贴在那里)。最后的字符串只会变成“v?gen”而不是“v%E4gen”。
  • @mdc - 你检查过编码的结果了吗?
  • 是的,由于某种原因,我得到了“ä”的问号,可能是做错了。如果你能用这个字母(“ä”)试验一分钟,看看你是否能把它变成“%E4”,我将不胜感激。它现在让我发疯 =)。
猜你喜欢
  • 2015-07-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-19
  • 2013-05-18
  • 2023-04-04
  • 2012-05-18
相关资源
最近更新 更多