希腊字符编码在HTML中工作,但在PHP中不工作

时间:2013-03-13 23:08:15

标签: php html mysql encoding utf-8

我有一个很难解决的奇怪问题。 我正在使用notepad ++,如果我将文件保存为带有希腊字符的文件(字符不是来自数据库),它会将希腊字符显示为Web浏览器中的问号,但如果我将相同的字符文件保存为.html,则会正确显示字符。

如果从数据库显示希腊字符,它会正确显示它们而不会出现问题。此外,它在我的共享主机上无法正常工作,但在我的本地主机上工作正常。

我试图以不同的编码保存.php文件,但仍然存在同样的问题。我还尝试用utf-8添加php header()和meta标签,但没有运气。

可能是什么问题? 感谢

1 个答案:

答案 0 :(得分:5)

即使你的mysql数据正确输出听起来很奇怪,因为php字符串编码失败,我试图解决你的问题的方法,就是将问题分解成试图识别这个错误编码生成位置的步骤!

首先,您应该尝试在php.ini文件中设置default_charsetutf-8,如下所示:

default_charset = "utf-8";

如果由于提供者限制而无法做到这一点,您仍然可以使用ini_set函数在运行时更改值!

您还需要确保将网络服务器设置为输出utf-8编码文件!在Apache中,这可以在httpd.conf中或使用htaccess文件中完成:

AddDefaultCharset UTF-8

此时如果一切都失败了,仍然......尝试使用php标头和相对的html字符集:

<?php header("content-type: text/html;charset=utf-8") ?>
<!doctype>
<html>
    <head>
        <meta charset="utf-8">
    </head>
    <body>
        <?php echo "α β γ δ ε ϝ ϛ ζ η θ ι κ λ μ ν ξ ο π ϟ ϙ ρ σ τ υ φ χ ψ ω ϡ" ?>
    </body>
</html>

但是,非常重要的是,您的文件也使用适当的编码保存(utf-8几乎总是更好的选择,它有助于防止相当多的问题)。如果你保存的编码不同于utf-8的文件,请从旧内容中删除一个新的文件。有时编辑器在创建文件后无法正确切换编码,即使记事本++通常在这方面做得很好;只使用converto to而不是encode in功能!

如果它仍然不起作用,虽然我希望它现在可以使用,你可以查看一些其他的php备选方案,例如mb_detect_encodingmb_convert_encodinghtmlentitieshtmlspecialchars为了解决问题!