php - MySQLi 将字符设置为 utf-8

标签 php mysql utf-8 mysqli

我有以下 mysqli 连接。如何将查询编码更改为 uft-8。在可视化西里尔字母结果时,它们显示为 ????????。

我需要像 mysql_query("SET NAMES UTF8"); 这样的东西但我不确定语法是否正确。

有什么想法吗?谢谢。

<?php
class db_result
{
    private $handler;

    public function __construct($query, $data)
    {
        foreach($data as $value)
        {
            $query = preg_replace('/\?/', '"'.db::quote($value).'"', $query, 1);
        }

        $this->handler = db::$handler->query($query);
    }

    public function fetch()
    {
        return $this->handler->fetch_assoc();
    }

    public function fetchColumn()
    {
        $row = $this->handler->fetch_array();

        return $row?$row[0]:false;
    }
}

abstract class db
{
    public static $handler;

    public static function init($settings)
    {
        self::$handler = new mysqli($settings['host'], $settings['user'], $settings['password'], $settings['db_name']);

        return !self::$handler->connect_errno;
    }

    public static function query($query, $data=array())
    {
        return new db_result($query, (array) $data);
    }

    public static function last_id()
    {
        return self::$handler->insert_id;
    }

    public static function quote($string)
    {
        return self::$handler->escape_string($string);
    }
}

最佳答案

你可以像这样使用 mysqli::set_charset:

self::$handler->set_charset("utf8");

http://www.php.net/manual/en/mysqli.set-charset.php

关于php - MySQLi 将字符设置为 utf-8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23552615/

相关文章:

MySQL 将列值设置为另一列的大写值

php - Mysql_stmt::bind_result()

javascript - 将JavaScript字符存储在一个字节中

java - 使用缓冲区将字符串转换为 UTF-8

javascript - 在 body 负载条件下调用 JQuery 方法

php - MySQL LEFT JOIN, INNER JOIN 等,复杂查询,PHP + MySQL for a forum

php - 无法从 mysql 数据库获取用户数据

oracle - PL/SQL : UTL_HTTP POST with UTF8 string results in broken characters

php - 从数据库中删除不工作使用 php

PHP 密码保护页面 cookie