2009-10-22 108 views
1

我在网页上显示 时遇到问题,在PHP中使用utf8_decode()后显示为 。 无法正常显示

我一直在使用

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 

我刚注意到,所有其他特殊字符,如®,™等也无效。

+0

如果紧急,您应该提供尽可能多的信息:我们需要源代码和理想的脚本在Web服务器上的输出能够以最好的方式帮助你。 – soulmerge 2009-10-22 19:45:25

+0

我注意到在代码的开头有一个空行,可以导致问题吗? – 2009-10-22 20:18:52

+0

你真的在使用字符编号' '吗? – Gumbo 2009-10-22 20:56:36

回答

5

确保您所指定的UTF-8编码的HTML文档的标签:

<meta content="text/html; charset=UTF-8" http-equiv="content-type" /> 
+0

我一直在使用 <!DOCTYPE html PUBLIC“ - // W3C // DTD XHTML 1.0 Transitional // EN”“http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”> \t 2009-10-22 20:09:18

1

因为utf8_encode('&nbsp;')==='&nbsp;'这是奇怪的。无论是utf8还是latin1编码,&nbsp;的字节序列都是相同的。
是剩下的字符串正确UTF8编码?

编辑:当你告诉浏览器你的页面是utf8编码时,你为什么首先使用utf8_decode()(将utf8编码的字符串转换为latin1)?

+0

我不知道该字符串是正确UTF8编码或不是,我怎么检查呢? – 2009-10-22 20:19:42

+0

如果启用了mbstring moule,则可以使用mb_check_encoding()检查编码。 http://docs.php.net/mb_check_encoding但请注意我的编辑。 – VolkerK 2009-10-22 21:08:25

0

另外,还要确保你给的文件通过把这样的一个适当的定义DTD:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 

为HTML在你的PHP文件的第一行。

+0

即使这没有帮助,我只是改变它,我注意到,在代码的开头有一个空行,可以导致问题? – 2009-10-22 20:17:26

1

你检查过的PHP文件本身的编码?

在某些Windows编辑器(如记事本++)你可以有一些当你检查错误的编码文件UTF-8字符的问题 - 即使你正确设置你的元标记。

在记事本+ +,你可以在本节进行更改:

Change notepad++ file encoding http://img198.imageshack.us/img198/9081/notepadp.png

如果你不使用记事本+ +,我们需要从您的安装一些更详细的信息,如使用的操作系统,IDE,等

0

当您使用utf8_decode,传递给这个函数其中从装载的字符串?你是从数据库加载数据?你有任何包含的文件?如果是这样,请检查它们是否全部编码为GmonC写的。尝试在页面的某处回显&nbsp;,看看它是否能正确显示。如果不是,请尝试制作干净的.php文件,然后查看问题是否仍然存在。如果不是某些包含的文件可能是问题,因为它可能有不同的编码