韩文字符在由 Apache 服务器提供的 Internet Explorer 中显示为随机符号

韩文字符在由 Apache 服务器提供的 Internet Explorer 中显示为随机符号

我在 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">

相关内容