在C#中输出带有特殊字符(μ)的HTML

时间:2013-11-26 04:30:40

标签: c# html special-characters

我使用C#通过以下代码生成具有特殊字符(μ)的HTML表:

string text1 = "100 μs";
string text2 = "100 \u00B5s";
string text3 = "100 &#xb5s";

string[] lines = { "<html>", "<body>", text1, text2, text3, "</body>", "</html>" };

string curFile = @"C:\SpecialCharacter.html";

System.IO.File.WriteAllLines(curFile, lines);

输出HTML的源代码如下:

<html>
<body>
100 μs
100 µs
100 &#xb5s
</body>
</html>

最后一个实际在浏览器中正确显示(100μs)。我想知道是否有更好的方法来做到这一点。也就是说,有没有办法在HTML源代码中实际看到“100μs”(并在浏览器中正确显示)?我知道如果我手写HTML,我可以做到,但我不知道如何通过C#实现这一点。

感谢。

1 个答案:

答案 0 :(得分:2)

默认情况下,File.WriteAllLines使用UTF-8对文本进行编码,但省略了Unicode byte order mark,这会使某些浏览器感到困惑。为了帮助这些浏览器,一个选项是通过明确指定Encoding.UTF8作为编码来包含字节顺序标记:

System.IO.File.WriteAllLines(curFile, lines, Encoding.UTF8);

另一种选择是包含一个<meta>标记,指定UTF-8作为编码:

string head = "<head><meta http-equiv='Content-Type' content='text/html; charset=UTF-8'></head>";
// ...
string[] lines = { "<html>", head, "<body>", text1, text2, text3, "</body>", "</html>" };