我在 CentOS 8 计算机上的 Apache 服务器上托管了一个网页,其中包含英文和韩文字符。字符在 Chrome 和 Edge 中正确呈现,但在 Internet Explorer 中不这样做。这是它的样子:
这应该是这样的:
AddDefaultCharset UTF-8
注释如下:
#
# Specify a default charset for all content served; this enables
# interpretation of all content as UTF-8 by default. To use the
# default browser choice (ISO-8859-1), or to allow the META tags
# in HTML content to override this choice, comment out this
# directive:
#
#AddDefaultCharset UTF-8
html文件定义如下:
<html>
<head>
<link href="../../meta/style.css" rel="stylesheet" type="text/css" charset="UTF-8">
</head>
<body>
那么为什么在 Internet Explorer 上不能正确呈现韩文字符呢?
按照答案中的说明添加 <meta ...> 解决了这个问题:
<html>
<head>
<link href="../meta/style.css" rel="stylesheet" type="text/css" charset="UTF-8">
<meta charset="EUC-KR">
</head>
<body>
正如您发布的信息所示,您没有在任何地方定义字符集——既不是在 HTTP 标头(通过 Apache)中,也不是在 HTML 文件本身中。(HTML 文件只为链接的 CSS 样式表指定一个字符集——而不是为 HTML 本身指定一个字符集!)
结果,网络浏览器被迫猜测最有可能使用的字符集(基于统计分析),并且不同的浏览器使用不同的算法——通常基于操作系统的区域设置和/或网站的域。因此,如果您使用的是英文 Windows,那么浏览器将首先尝试猜测英文或欧洲编码。
为避免这种情况,您需要在
<head>
. 您的示例图像看起来最初是 EUC-KR(但被误检测为 Windows-1252),因此添加如下标签:国际网页的另一种非常常见的编码是
UTF-8
.请注意,浏览器可能要求 charset 声明位于文件的前 1 kB 内,因此最好将其放置在尽可能靠近 <head> 顶部的位置。
为了与非常旧的浏览器兼容,还有长版本: