【问题标题】:Unicode fonts in php page in web browser showing as ? marks, how can i correct it?Web浏览器中php页面中的Unicode字体显示为?标记,我该如何纠正它?
【发布时间】:2011-09-28 11:16:42
【问题描述】:

我正在开发一个带有一些印度 unicode 字符的网站,我在我的电脑上安装了 xampp,当我在本地服务器上测试时,unicode 字符显示正常,但是当我将它上传到 web 服务器时,所有 unicode 字符都显示为??标记....

我的网络服务器是基于 Linux 的,所以任何人都可以帮忙......

这是来自我的网站:

这是来自我的本地网络服务器:

【问题讨论】:

    标签: php html unicode


    【解决方案1】:

    确保在 html 中将 charset 声明为 utf-8,例如 the Mozilla docs 中的示例:

    <!-- Defining the charset in HTML4 -->
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    
    <!-- In HTML5 -->
    <meta charset="utf-8">
    

    【讨论】:

    • 是的,我已经添加了,我可以在本地 xampp 服务器中看到 unicode 字符,但在 Web 服务器上我看不到...
    • 如果 HTTP 服务器发送指示不同字符集的 Content-Type 标头,这将无济于事。
    【解决方案2】:

    您需要在 HTTP 标头中声明字符集为 UTF-8,具体方式取决于您的服务器:http://www.w3.org/International/O-HTTP-charset

    如果您不想配置您的网络服务器,您也可以在网页的&lt;head&gt; 中使用&lt;meta http-equiv&gt; 标记,它可以等同于HTTP 标头。

    【讨论】:

      【解决方案3】:

      确保您的服务器使用 UTF8 作为默认字符集(也许您需要修改服务器设置)。

      AddDefaultCharset utf-8
      

      将上面的行放到您的 httpd.conf(如果可能...然后重新启动服务器)或 DOCUMENT_ROOT 顶层的.htaccess-文件(无需重新启动)

      通过元标记声明字符集是不够的,它将被服务器发送的字符集标头(如果存在)覆盖。

      您也可以在脚本中发送标头:

      <?php header('Content-Type: text/html; charset=utf-8'); ?>
      

      【讨论】:

      • 我如何以及在哪里添加你指定的这个命令...你能解释一下吗
      • 但是为什么我可以在本地服务器上看到 unicode 字母而不是在 Web 服务器上...
      • 因为您的本地服务器可能使用另一个默认字符集。请参阅我的帖子中的编辑以查看该行的位置。
      • AddDefaultCharset、httpd.conf 和 .htaccess 是特定于 Apache HTTP 服务器(及其衍生产品)的,听起来像是 OP 可能正在使用的。 PHP 的header() 应该可以正常工作。
      猜你喜欢
      • 2014-11-03
      • 2016-02-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-09
      • 2011-04-07
      • 1970-01-01
      • 2014-10-15
      相关资源
      最近更新 更多