Unicode和PHP - 我做错了吗?

时间:2010-04-07 02:41:29

标签: php unicode

我正在使用Kohana 3,它完全支持Unicode。

我将此作为<head>

的第一个孩子
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

我插入的Unicode字符是é,就像在Café中一样。

但是,我得到了三角形? (因为无法解码字符)。

据我所知,在我自己的代码中,我没有对文本进行任何字符串操作。

事实上,我已将重音直接放入视图的PHP文件中,但它仍无效。

我从此页面复制了该字符:http://www.fileformat.info/info/unicode/char/00e9/index.htm

我刚开始研究PHP的Unicode限制,所以我可能会做一些可怕的错误。

那么,我该如何显示这个角色?我是否需要求助于HTML实体?

更新

所以这是有效的

Caf<?php echo html_entity_decode('&#233;', ENT_NOQUOTES, 'UTF-8'); ?>

为什么这样做?如果我从该脚本复制输出重音e并将其插入到我的文档中,则它不起作用。

2 个答案:

答案 0 :(得分:1)

查看http标头。你应该看到像

这样的东西
Content-Type: text/html; charset=UTF-8

如果有一个真正的http标题声明了不同的编码,浏览器就不会太关注元标记。

更新

从中得到什么?

echo bin2hex('é');
echo chr(0xc3) . chr(0xa9);

你应该得到c3a9é,否则我会说文件编码问题。

答案 1 :(得分:0)

我想,你看 ,无效UTF-8字节序列的替换字符。您的文本不是UTF-8编码的。检查编辑器的设置以控制PHP文件的编码。

如果您不确定源代码的编码,可以执行此处所述的UTF-8兼容性(德语文本):Force UTF-8

您永远不需要除basic ones以外的实体。