’ 被显示而不是 -

问题描述 投票:0回答:6

’
在 php 页面中显示而不是
-

我尝试使用不同的编码类型,例如:

<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>

但结果是一样的。可能是什么问题呢?

输入

<strong style="color:#A8A8A8;">1</strong>
– Lorem Ipsum.

结果

1 – €“Lorem Ipsum.

php character-encoding non-ascii-characters
6个回答
5
投票

确保您的 html 标题指定 utf8

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

这通常对我有用(很明显,如果内容是 utf8)。

如果设置了内容类型,则不需要转换为 html 实体。


检查http://php.net/manual/en/function.mb-convert-encoding.php

<?php
     header('Content-Type: text/html; charset=utf-8');
     mb_internal_encoding('utf-8');
?>

也许这会对你有所帮助。


2
投票

看起来您的源数据在此过程中从一种编码转换为另一种编码。尝试确保所有步骤都具有相同的编码。

  1. 您的(MySQL?)数据是否存储为 UTF8?
  2. 您的 .php 文件是否保存为 UTF8?

像这样的转换错误通常在将 UTF8 数据作为 ISO-8859-1 数据处理时弹出。 (多字节还是单字节?不确定)。


2
投票

meta 标签没有改变输出的事实是一个强有力的指标,表明有一些东西覆盖了它;可能是 HTTP 标头中指定的字符集(优先于元标记),你确定你没有在那里设置它吗?


1
投票

您的文档很可能是用 UTF-8 编码的,因为

–
是 UTF-8 编码字符
.

的 iso-8859-1 表示

你需要的是你描述的元标签:

<meta http-equiv="Content-Type" content="text/html;charset=utf-8">

因为它不起作用,标签可能会被忽略。建议使用浏览器并检查它尝试使用的编码(工具 - Chrome 中的编码)。

  • 如果浏览器使用UTF-8,你已经对字符进行了双重编码。检查你的代码,如果你没有过多的
    utf8_encode(...)
  • 如果浏览器使用 Latin1 (iso-8859-1),您的标签将被 HTTP 标头忽略或覆盖。尝试使用在线验证器验证您的 HTML。使用浏览器的开发工具检查发送的标头信息,确保未将 iso-8859-1 设置为编码。

-1
投票

从 javacode 创建文件并将编码设置为 UTF-16 时遇到同样的问题。


-1
投票

添加以下标题标签:

<meta charset="UTF-8">
© www.soinside.com 2019 - 2024. All rights reserved.