【问题标题】:Hebrew fonts is not showing希伯来字体未显示
【发布时间】:2012-07-28 22:40:13
【问题描述】:

我有一个 API,我在其中显示一些英语和希伯来语视频。除了用希伯来语写的标题没有显示它的返回符号“??”之外,它一切都运行良好 有什么想法吗??

【问题讨论】:

  • 我们需要有关该程序的更多信息。数据从何而来?是 MySQL 吗?您是否有权访问数据本身?
  • 是的,数据来自数据库。我通过 API 获取数据,它完美地检索了所有记录。但是用希伯来语写的标题没有以正确的方式显示。它只是带有“?”标志

标签: php mysql unicode utf-8 character-encoding


【解决方案1】:

您是否对您的HTML document to accept 进行了编码?

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

<html lang="he">
...
</html> 

【讨论】:

  • 问题是,如果客户端编码不正确,您会看到乱码(或方块/其他碎片),但绝不会出现问号。
【解决方案2】:

如果数据来自数据库,您需要确保使用正确的编码检索数据。如果可能,您应该在查询之前运行 SET NAMES 查询(SET NAMES 'utf8' 或 SET NAMES 'hebrew',取决于数据库中的排序规则)。

【讨论】:

    【解决方案3】:
    1. 通过在 head 标记之间添加 确保您使用的是 UTF-8。

    2. 确保数据库内容为 UTF-8。 如果不是 UTF-8,则需要将数据库数据从数据库中使用的编码转换为 UTF-8,然后再将其推送到 Web 浏览客户端,如下所示:$str = mb_convert_encoding ($str, "UTF-8", "DATABASE-ENCODING-USED");更多信息和示例:http://php.net/manual/en/function.mb-convert-encoding.php

    两者都可以解决您的问题。

    更新

    可能有点牵强,但请确保您的浏览器也能够显示希伯来字体类型。

    事实上,您没有告诉我们您如何检查您的数据库(使用客户端或通过浏览器),我们也不知道您如何测试显示。

    为避免调试工作中出现任何“隐藏”错误,请尝试以下代码:

    <?php
    /*
        Make sure the web browser receives a header telling it there's UTF-8 inside.
    */
    header('Content-Type: text/html; charset=UTF-8'); 
    /*
        Write a title that will display correctly
        if there's no font-related issue in your browser.
    */
    echo('<h1>זהו מבחן.</h1>');
    /* 
        Now connect to database, 
        and use a simple SELECT to fetch something from the database.
    
        Replace YOUR-MYSQL-USERNAME, YOUR-MYSQL-PASSWORD and YOUR-MYSQL-DATABASE
        with your individual values...
    */
    $dbh = mysql_connect("localhost","YOUR-MYSQL-USERNAME","YOUR-MYSQL-PASSWORD");
    if(!$dbh)
    {
        exit('Could not connect: ' . mysql_error());
    }
    $result = mysql_query('SELECT * FROM YOUR-MYSQL-DATABASE LIMIT 1',$dbh);
    mysql_close($dbh);
    /*
        Now dump it nicely to the screen and exit.
    */
    echo('<pre>');
    var_dump($result);
    echo('</pre>');
    
    exit();
    ?>
    

    这将帮助您解决问题。

    如果它没有很好地显示您的希伯来语字体,则很可能是字体和浏览器问题。

    在任何其他情况下,您的数据库不是 UTF-8,您需要使用 *mb_convert_encoding* 或类似方法进行转换 - 如上所述。

    【讨论】:

    • 数据库内容已经是编码形式。它完美地显示了希伯来字体。但我的网络浏览器无法获取相同的内容。
    • 我已经更新了我的答案并添加了一个示例脚本来帮助您解决问题。 ;)
    • 谢谢e-sushi,我明白了:)
    猜你喜欢
    • 1970-01-01
    • 2012-08-10
    • 1970-01-01
    • 2012-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多