使用 PHP 5.5 UTF-8 问题插入更新到 MYSQL

Far*_*yev 4 php mysql utf-8

我无法理解什么问题。我用php和utf-8问题将数据写入mysql

以 HTML 形式编写 Bin?q?dir。Çiç?kq?s

写入数据库Bin?q?dir。×

当我mysqli_set_charset($conn,"utf8");插入更新查询中使用时

写入数据库Bin?q?dir。Çiç?kq?s

手动将数据直接写入数据库并mysqli_set_charset($conn,"utf8");选择中使用 正常工作。

我该如何解决?使用 UTF-8插入更新。这是我的插入代码

public function insert($sql) {
    $conn = new mysqli(DB_HOSTNAME, DB_USERNAME, DB_PASSWORD, DB_DATABASE);
    if ($conn->connect_error) {
        die("Connection failed: " . $conn->connect_error);
    }
    mysqli_set_charset($conn,"utf8");
//  $conn->set_charset("utf8"); use same this.
    if ($conn->query($sql) === TRUE) {
        return 1;
    } else {
        return 0;
    }
    $conn->close();
}
Run Code Online (Sandbox Code Playgroud)

注意:此问题在 Linux 和 OSX 上。在 windows 工作货物。我该如何修复它以用于 linux 托管?

小智 5

尝试

AddDefaultCharset utf-8
Run Code Online (Sandbox Code Playgroud)

在你的 apache 配置中

或者在你的 php 文件中使用

header( 'content-type: text/html; charset=utf-8' );
Run Code Online (Sandbox Code Playgroud)

并尝试

default_charset = "utf-8";
Run Code Online (Sandbox Code Playgroud)

在你的 php.ini

你也可以试试

  [client]
  default-character-set=utf8

  [mysql]
  default-character-set=utf8

  [mysqld]
  character-set-client-handshake = false #force encoding to uft8
  character-set-server=utf8
  collation-server=utf8_general_ci

  [mysqld_safe]
  default-character-set=utf8
Run Code Online (Sandbox Code Playgroud)

在您的 my.ini 中并重新启动 mysql 恶魔