【问题标题】:Output from C# to html web page - UTF8 fails?从 C# 到 html 网页的输出 - UTF8 失败?
【发布时间】:2011-08-07 10:17:13
【问题描述】:

嘿, 所以我们有一个用 C# 编写的后端,并且我们在该后端中有一个具有“特殊字符”的语言的文本。

问题是当我将保存的文本(从 C# 应用程序)输出到网页(ASP.NET)时,即使浏览器将页面解释为 UTF(因为我放置了一个元标记告诉是UTF8的浏览器)。

但由于一切都搞砸了,我有点怀疑 C# 的输出是什么。它可能不是UTF8,而是别的东西。我在某个地方读到 .NET 中的文本通常是 UTF-16?

基本上,我正在分配一个标签(可以执行 HTML),其值取自后端。那必须是 UTF8 格式。

如何以最好的方式做到这一点?

【问题讨论】:

  • 我认为你没有充分描述这个问题。文本如何存储在文本文件中?您如何将其输出到网页? “乱七八糟”是什么意思?
  • 文本存储在 C# 对象中,并且存储在数据库中。它是一个“字符串”,仅此而已。
  • 它的输出:在 ASP.NET 中(使用 ext.net)在代码隐藏中像:lblMyGreatLabel.Html = SRef.GetText("TheTExt); 并且 GetText 返回“字符串”

标签: c# html utf-8


【解决方案1】:

.NET 字符串本机编码为 UTF-16。以下将 HTTP 输出设置为 UTF-8:

Response.ContentEncoding = System.Text.Encoding.UTF8;

【讨论】:

    【解决方案2】:

    在 HTML 中输出特殊字符时,无论如何都应该使用 Unicode 转义序列对它们进行转义(例如,é 使 é)。

    【讨论】:

    • 好吧,在这种情况下,ppl 将手动编辑该文本......并且他们正在使用具有这些特殊字符的键盘。他们不能在编辑器中写 é。他们会写 õ 之类的东西......
    • 是的,但是使用 C# 很容易在代码中转义类似的内容。不过想一想,我不确定 ASP.NET Label 控件是否已经转义 & 符号并且我无法测试它,所以不要打扰。不过,您可以尝试输出 Content-Type 标头而不是 <meta> 标记。
    【解决方案3】:

    【讨论】:

    • 正如我在帖子中所说,这已经完成:“因为我已经放置了一个元标记告诉浏览器它是 UTF8”
    • 好吧,得到一些证据并在某个地方发布一个公共页面,以便我们了解问题所在。您告诉浏览器的方式一定有一些东西,浏览器没有完全理解:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-01
    • 1970-01-01
    • 2012-04-09
    相关资源
    最近更新 更多