PHP UTF-8字符集重音

时间:2009-12-09 15:54:20

标签: php utf-8

很抱歉,如果这个问题已经存在,但我需要一种更实际的方法:

页面设置如下:

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

稍后在php中使用以下行

$v .= "<a href='" . $videoEntry->getVideoWatchPageUrl() . "' rel='vidbox' title='" . $videoEntry->getVideoTitle() . "'><img src='";

...

$v .= "<td width='52%' height='16'><strong>Visualizações:</strong> " . $videoEntry->getVideoViewCount() . "</td>";

确定。现在

当我做的时候

echo $v;

ItajubáemFoco Canal20 Oficina de Cuidados Paliativos(正确)

Visualiza es:204 //(不正确)

如果我尝试

echo utf8_encode($v);

ItajubáemFoco Canal20 Oficina de Cuidados Paliativos //(不正确)

Visualizações:204 //(正确)

我尝试使用

标题('Content-type:text / html; charset = utf-8');

但没有成功。

2 个答案:

答案 0 :(得分:1)

确保您使用的编辑器正在以UTF-8保存文件!其中一些似乎来自一个数据库,它必须以UTF-8存储(或者做

mysql_query("SET NAMES utf8");

将连接切换为UTF-8。

如果编辑器未将文本(“Visualizações”)保存为UTF-8,则应使用编辑器或其他工具(如“iconv”)转换文件。

祝你好运,
费边

答案 1 :(得分:1)

如果来自数据库的数据以UTF-8的形式出现,但是.php文件本身的静态内容不是,这意味着你没有将PHP文件本身保存为UTF-8你的文字编辑器。可能你保存为Windows代码页1252(西欧);确保在保存对话框中更改它(到UTF-8;如果有'UTF-8无BOM的单独选项'选择它,因为UTF-8-with-BOM完全是假的)。

如果文本编辑器稍后在加载文件时错误符号,则需要告诉它默认以UTF-8模式加载文件。如果它没有那个选项,那就是垃圾,应该更换。如果你真的无法替换它,你将不得不放弃源文件中的Unicode字符并对它们进行编码,如HTML:

Visualiza&#xE7;&#xF5;es

或者,特别是在PHP字符串文字中:

"Visualiza\xE7\xF5es"

顺便说一句,当您将文本放入HTML时,您需要使用htmlspecialchars,否则您会遇到XSS错误。