我在 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>
答案1
正如您发布的信息所示,您没有在任何地方定义字符集——无论是在 HTTP 标头中(通过 Apache),还是在 HTML 文件本身中。(HTML 文件仅有的为链接的 CSS 样式表指定字符集 - 但不为 HTML 本身指定字符集!)
因此,网络浏览器被迫猜测哪种字符集最有可能被使用(基于统计分析),不同的浏览器使用不同的算法——通常基于操作系统的区域设置和/或网站的域名。因此,如果您使用的是英文版 Windows,那么浏览器将首先尝试猜测英文或欧洲编码。
为了避免这种情况,您需要在里面添加字符集声明<head>
。您的示例图像看起来最初是 EUC-KR(但被误检测为 Windows-1252),因此请添加如下标签:
<meta charset="EUC-KR">
另一种非常常见的国际网页编码是UTF-8
。
请注意,浏览器可能要求字符集声明位于文件的前 1 kB 内,因此最好将其尽可能靠近 <head> 的顶部。
为了与非常旧的浏览器兼容,还有一个长版本:
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">