编码错误:为什么我的中型破折号在另一台服务器上编码不同?

G M*_*han 5 html .htaccess encoding character-encoding

我的"em dash"字符在两台服务器上的显示方式不同.

当我访问服务器1时: -

当我访问服务器2时: â€

我没有使用任何数据库连接,只是纯HTML.

以下是我的HTML文件的前4行:

<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <meta charset="utf-8" />
Run Code Online (Sandbox Code Playgroud)

请帮帮我,我看不出它有什么问题.

-解-

如下所示,我用我的短划线替换了

&#8211;
Run Code Online (Sandbox Code Playgroud)

为了使服务器正确显示我的►字符,我必须将.htaccess放在具有以下代码行的文件夹中:

AddDefaultCharset UTF-8
Run Code Online (Sandbox Code Playgroud)

感谢大家!

Juk*_*ela 5

如果服务器发送不同的Content-Type标头,这可能会发生.当提供不同的编码信息时,完全相同的文档可能具有不同的含义.

上传文件时可能会更改某些内容(错误的转换).但在这种情况下,通常,标题问题可能解释了差异.

如果文档是UTF-8编码并包含" - "(即EN DASH,U + 2013,而不是EM DASH),那么如果标题指定则显示OK Content-Type: text/html;charset=utf-8.但是如果标题有例如windows-1252而不是utf-8,那么构成UTF-8编码表示" - "的三个字节,即0xE2 0x80 0x93,将被解释为按照windows-1252编码,这意味着â €".如果你真的看到了,那么接下来发生的事情有点模糊,但修复编码问题更为重要,这可能解决问题.

查看有关编码W3C教程.

  • 究竟.为了澄清,如果您有一个指定编码的HTTP标头,以及指定编码的元标记,HTTP标头将获胜! (2认同)

Rei*_*ica 2

它们可能使用不同的编码。在 UTF-8 中,您可以直接包含 m-dash (\xe2\x80\x94),但如果页面以 ASCII 形式提供,则需要将其编码为&mdash;. 查看源代码并查看它使用的是哪一个。

\n\n

我认为这就是正在发生的事情,因为“\xe2\x80\x94”是多个字节长,所以它会被解释为多个 ASCII 字符。

\n