设置网页的内容类型是不是很糟糕?

时间:2014-01-27 14:45:49

标签: html asp.net character-encoding webforms content-type

我是巴西人,在这里工作/生活。对于那些不知道的人,葡萄牙语有很多带有重音字母的单词。而且我也知道,如果你没有正确地使用charset,所有重音字母在渲染到浏览器时都会变成垃圾。

所以,在我的日常工作中,我总是在老板的代码中找到(这不是最精心编写的)&符号模式(如果这有一个名字,请告诉我)。所以,例如,这些都到处都是:

Formulário
Relatório
Exclusão

我知道你可以在服务器和客户端上设置网页的字符集,一直在我的网页中这样做(BTW我们一直在使用ASP.NET WebForms)......

<%@ Page (...) ContentType="text/html; charset=utf-8" %>

然后,在<head>

<meta charset="utf-8" />

但是我的老板看到了这个,并说这是一个不好的做法。我搜索了一下,发现没有资源说它实际上是一种不好的做法。曾经有一段时间,我的老板说好的做法很糟糕。然后他告诉我用他们的&符号替换我所有的重音字母。如果这真的是一种更好的做法,我会这样做。

所以, TL; DR :设置网页的内容类型或使用“&符号模式”更好吗?

2 个答案:

答案 0 :(得分:2)

“更好”有点主观。两种方法都有利弊。

使用合理的字符编码:

  • 为您提供更易读的代码
  • 为您提供更小的代码

使用字符引用:

  • 表示您不必关心编码
  • 允许将页面复制到错误的HTTP标题的某个位置并且仍可正常工作

答案 1 :(得分:2)

W3C有an article on character encoding非常有用。他们对此的看法非常多:

  

您应始终指定用于HTML或XML页面的编码。   如果不这样做,则可能会导致内容中的字符不正确   解释。这不仅仅是人类可读性的问题,   越来越多的机器也需要了解您的数据。

此外,根据<meta>元素上的MDN article,最好指定charset,因为它可以保护您的用户免受某些跨脚本攻击:

  

强烈建议定义角色是一种好习惯   使用此属性设置。如果没有为页面定义字符集,   几种跨脚本技术可能会变得切实可行   页面用户,就像UTF-7后备跨脚本技术一样。总是   设置此元将防止这些风险。

尽管可能在极少数情况下无法指定内容类型,但一般意见似乎是指定内容类型是一种好习惯。如果你这样做,那么就不需要使用特殊字符的HTML表示(在我看来,这使你的代码更难阅读)。