【问题标题】:encode php page in utf-8 gives me error在 utf-8 中编码 php 页面给了我错误
【发布时间】:2015-08-12 11:47:31
【问题描述】:

我的代码有问题。我创建了一个 php 页面,它与数据库建立连接,从表中提取一些字段,然后将查询结果回显到正文中的 html div。问题是我的网站是克罗地亚语,所以我有像 č,ž,š... 这样的字符没有显示(它显示一个问号)。我在网上搜索了 2 天没有解决方案。我设置了一个

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

我还设置了 html 元标记:

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

我的php页面保存为utf-8 unicode normalization form C,数据库有charset UTF-8,表和字段都是utf-8,数据库的排序规则是utf-8 general ci。

如果您需要,我也可以提供我的代码(我现在只是避免它不要让帖子太长)。

另一个有趣的事情是,如果我在我的 php 文件中创建一个普通的 html 标签,比如 a 并在其中写一些带有 č,ć,š 的字符,但是当我使用 php 从基础中提取一些信息时,字符被替换。同样在数据库中,字符都是正确的,一切看起来都很好。最后一件事,我的页面从 iframe 中的 k2 页面加载 k2 项,并且所有其余页面都可以正常工作。

我真的不知道如何解决这个问题,所以每个建议都会被很好地接受:D

【问题讨论】:

  • UTF-8 all the way through 的可能重复项
  • 这个问题可能很快就会作为副本关闭。如果来自重复的答案不能完全解决您的问题,请edit 它解释是什么使它独一无二,然后标记它以重新打开。谢谢!
  • 信息不足。 “字符被替换” - 什么?也许 Mojibake Ä,ć,Å¡

标签: php html mysql encoding utf-8


【解决方案1】:

您可能忘记将连接字符集设置为 UTF-8

你需要做SQL命令set names 'utf8'

Check this

【讨论】:

    【解决方案2】:

    如果只是从您的数据库中提取的字符,并且它们正确存储在数据库中,则可能与您连接到数据库有关。

    尝试在连接到数据库后直接运行此代码:

    • $conn-&gt;set_charset("utf8"); 用于 MySQLi (OOP)
    • mysqli_set_charset("utf8"); 用于 MySQLi(程序)
    • mysql_set_charset("utf8"); 用于 MySQL(已弃用)

    或者对于PDO,在制作对象的时候就完成了

    • $dbh = new PDO("mysql:host=$host;dbname=$db;charset=utf8", $user, $pass); 用于 PDO

    【讨论】:

      【解决方案3】:

      尝试在你的配置文件中使用这个.........

      $mysqli = new mysqli("localhost","root","password","db");
      
      $mysqli->query("SET NAMES 'utf8'");
      
      $mysqli->query("SET CHARACTER SET utf8");
      

      也许这会有所帮助...

      【讨论】:

        猜你喜欢
        • 2017-06-20
        • 1970-01-01
        • 1970-01-01
        • 2012-06-01
        • 2019-01-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多