Php Mysql:Charset

时间:2015-08-05 14:15:19

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

我的数据库有

  • 默认排序规则:utf8_unicode_ci
  • 默认字符集:utf8

我的所有数据库都有:

  • 整理:utf8_unicode_ci

我的主页保存为utf8,有utf8-meta-charset和php utf8-header。我的Ajax加载页面也是如此。但是,会显示ä,ö,ü等字符:“?”

如果我在主页的开头设置名称

set names utf8 COLLATE 'utf8_general_ci'

加载Ajax的内容是正确的,但我的主页ö,ü...显示“?” 主页内容来自mb_detect_encoding($str);还是utf8 ......

我应该在哪里看?

注意:每个内容都包含在include_once中 所以index.php-> loged.php-> content.php

2 个答案:

答案 0 :(得分:0)

让您的网站使用UTF-8:

  1. 将charset设置为php连接对象(不要与数据库设置混淆)$mysqliDb->set_charset('utf8');
  2. 使用UTF-8对PHP页面进行编码,这必须由您的代码编辑器完成。
  3. 我试图在这篇简短的article中指出所有重点。

    修改

    对于PDO,设置字符集的语法是:

    $dsn = "mysql:host=$dbHost;dbname=$dbName;charset=utf8";
    $db = new PDO($dsn, $dbUser, $dbPassword);
    

答案 1 :(得分:0)

您可以尝试执行mysqldump,查看转储内容以确保内容是utf-8编码的。如果没有,将其转换为utf-8并导回转储。

如果这样可以解决您的问题,那么将数据保存到数据库中的脚本会将其保存为错误的编码。