【问题标题】:Diacritics from a mysql database not displayed correctly with an HTML and PHP page来自 mysql 数据库的变音符号无法在 HTML 和 PHP 页面中正确显示
【发布时间】:2011-08-10 10:10:34
【问题描述】:

我有一个 mysql 数据库 (Wamp),它使用 latin1_swedish 对字符 (é、è、...) 进行编码,但由于未知原因,当我显示来自数据库的一些结果时(使用 HTML 页面和 PHP 页面)变音符号(à、é、è)显示不正确。

我已经尝试更改网页的字符集(iso 88599-1、utf-8),但它不起作用。

【问题讨论】:

  • 输出的是什么?人物?
  • @Luke 钻石内的感叹号。
  • 我可能会走得更远,但这与您在回显数据时不使用 htmlentities 有关吗?
  • @Luke 你说得对:它适用于 htmlentities !发表你的答案,我会接受。

标签: php mysql html character-encoding wamp


【解决方案1】:

echo htmlentities($variable_name);

【讨论】:

    【解决方案2】:

    尝试检查您的文件(您可以使用 notapad++)、您的数据库(您可以在 phpmyadmin 中看到)和您的数据库连接(您可以在连接到数据库的 php 文件中检查这个)的编码)。

    它们都应该匹配

    【讨论】:

      【解决方案3】:

      如果你知道输入的字符编码并且知道输出的内容,你或许可以使用 iconv:http://www.php.net/manual/en/function.iconv.php

      例如,如果 db 是 iso-8859 并且您需要 utf-8,则调用

      iconv("ISO-8859-1", "UTF-8", $text);
      

      一旦存储了值,您就不能只更改表的字符集,因为数据不会被转换。您必须使用可用的 MySQL 函数转换数据。在http://dev.mysql.com/doc/refman/5.0/en/charset-convert.html 阅读更多相关信息。

      【讨论】:

        【解决方案4】:

        您是否使用

        设置了与 mysql db 的连接
        SET NAMES utf8;
        

        命令?

        有几种方法:

        mysql_query("SET NAMES 'utf8'");
        

        mysql_query("SET CHARACTER SET utf8 ");
        

        或者,“最好的”;

        $link = mysql_connect('localhost', 'user', 'password');
        mysql_set_charset('utf8',$link);
        

        【讨论】:

        • 不,我不知道怎么用。
        • 我用解释编辑了我的答案 - 检查它并尝试不同的东西。
        猜你喜欢
        • 2018-05-19
        • 2021-01-18
        • 2018-07-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-02-15
        相关资源
        最近更新 更多