php中文保存数据库乱码怎么办
时间:2023-04-10 13:14
在 PHP 中,若使用中文字符保存到数据库中,可能会出现乱码的情况。这是因为数据库和网页编码不一致,导致数据不正确地被存储。以下是一些解决办法。 首先确认数据库的编码是否为 UTF-8(或者其他支持中文的编码)。如果不是,可以在数据库中设置编码为 UTF-8。 如果使用 MySQL 数据库,在创建数据库和数据表时,需要指定编码: 其次,在 PHP 脚本中设置编码为 UTF-8: 也可以在 PHP 配置文件 php.ini 中设置: 在连接数据库时,也需要设置编码为 UTF-8。如果使用 PDO 连接数据库,可以这样写: 如果使用 MySQLi 连接数据库,可以这样写: 如果以上方法都不能解决问题,那么可能是保存到数据库的字符串编码和数据库编码不一致,需要进行编码转换。可使用 PHP 的 iconv 函数或 mb_convert_encoding 函数进行转换。 总结 在 PHP 中保存中文字符到数据库时,要确认数据库和网页编码一致,并在连接数据库和 PHP 脚本中设置编码为 UTF-8。如果出现乱码,可尝试进行编码转换。希望这些方法能帮助你解决问题。 以上就是php中文保存数据库乱码怎么办的详细内容,更多请关注Gxl网其它相关文章!CREATE DATABASE dbname CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE TABLE tablename ( id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, name VARCHAR(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, age INT(3)) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
header('Content-Type: text/html; charset=utf-8');
default_charset = "utf-8"
$dsn = "mysql:host=localhost;dbname=dbname;charset=utf8mb4";$dbh = new PDO($dsn, $user, $password);
$mysqli = new mysqli("localhost", "user", "password", "dbname");mysqli_set_charset($mysqli, "utf8mb4");
$str = "你好";$str = iconv('gbk', 'utf-8', $str);//或$str = mb_convert_encoding($str, 'utf-8', 'gbk');