我使用C#通过以下代码生成具有特殊字符(μ)的HTML表:
string text1 = "100 μs";
string text2 = "100 \u00B5s";
string text3 = "100 µs";
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 µs
</body>
</html>
最后一个实际在浏览器中正确显示(100μs)。我想知道是否有更好的方法来做到这一点。也就是说,有没有办法在HTML源代码中实际看到“100μs”(并在浏览器中正确显示)?我知道如果我手写HTML,我可以做到,但我不知道如何通过C#实现这一点。
感谢。
答案 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>" };