2

我有一个非常奇怪的问题,无法弄清楚。我正在使用记事本++,如果我将文件保存为带有希腊字符(不是来自数据库的字符)的 .php,它会在 Web 浏览器中将希腊字符显示为问号,但如果我将相同的字符文件保存为 .html,它会正确显示字符。

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

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

可能是什么问题?谢谢

4

1 回答 1

5

尽管您的 mysql 数据正确输出而 php 字符串在编码时失败,这听起来真的很奇怪,但我尝试解决您的问题的方法是将问题分解为尝试识别错误编码的生成位置的步骤!

首先,您应该尝试在 php.ini 文件中设置您的default_charsetto utf-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 的编码保存文件,请销毁它们并从旧内容中创建新文件。有时编辑器在创建文件后并不能真正正确地切换编码,尽管 notepad++ 通常在这方面做得很好;只是converto to不使用该encode in功能!

如果它仍然不工作,虽然我希望它现在可以工作,你可以检查一些其他的 php 替代品,如mb_detect_encodingmb_convert_encodinghtmlentitieshtmlspecialchars以解决问题!

于 2013-05-02T16:11:17.800 回答