gpt4 book ai didi

php - 无法从 mysql 检索 utf8 编码值

转载 作者:行者123 更新时间:2023-11-29 01:09:04 24 4
gpt4 key购买 nike

遇到这样的问题,先看看mysql表=>

CREATE TABLE IF NOT EXISTS users(
id int(4) NOT NULL AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(40) CHARSET utf8 COLLATE 'utf8_unicode_ci' NOT NULL,
surname VARCHAR(40) CHARSET utf8 COLLATE 'utf8_unicode_ci' NOT NULL,
);

它正在成功存储数据,但是当我尝试将此信息检索到我的 .php 文件(编码也是 utf8)时,它仍然显示问号(?????),为什么?我该如何解决?

更新

我做的不好。所以我有 2 个 php 文件,一个是 classA.php 文件,我在其中定义了从数据库中检索信息的类,并且我已经将这个文件 (classA.php) 包含在我想查看的 default.php 文件中数据。我有上面写的完全相同的表格,我正在写

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

在default.php的第一行,还是不行,多谢指教:))

第二次更新

我在 classA.php 文件中的这个脚本,它的编码是默认的,就像 default.php 文件编码一样。我刚刚在 default.php 文件的第一行添加了这个

header("Content-Type: text/html; charset=UTF-8");

但还是不行。

第三次更新

sql =>

create table ok(
id int(2) not null auto_increment primary key,
name varchar(20) charset utf8 not null);

和php文件

<?php
header('Content-Type: text/html; charset=UTF-8');
?>
<!DOCTYPE html>
<html>
<head>
<title>hello</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>


<?php
$con = mysqli_connect("host","user","pass","db");

if (mysqli_connect_errno()==0){
if ($r = mysqli_query($con,"SELECT * FROM ok")){
mysqli_set_charset($con,"utf8");
while ($d = mysqli_fetch_assoc($r)){
echo $d['name'] . "<br>";
}
}
}

if (isset($con)){
mysqli_close($con);
}
?>


</body>
</html>

我已经在 ok 表中插入了这个=>

insert into ok(name) values("one"),("ერთი"),("two"),("ორი");

附言。特殊字符是格鲁吉亚语:)

结果英文字符正常,格鲁吉亚字符带问号:(

无论如何都行不通:(

最佳答案

PHP 文件采用 UTF-8 格式 的事实并不一定意味着来自/进入数据库 的数据也采用 UTF-8 格式。

您没有提到您使用的是哪个扩展程序,但是:

  • 对于 mysql 使用 mysql_set_charset($link,'utf8');

  • 对于 mysqli 使用 mysqli->set_charset('utf8') 或与上面相同的 mysqli_

  • 对于 PDO,连接时在 DSN 字符串中包含 charset:utf8

关于php - 无法从 mysql 检索 utf8 编码值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11467861/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com