首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法从mysql检索utf8编码值。

无法从mysql检索utf8编码值。
EN

Stack Overflow用户
提问于 2012-07-13 09:37:16
回答 3查看 2.4K关注 0票数 2

我有这样一个问题,首先看看mysql表=>

代码语言:javascript
运行
复制
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)时,它仍然向我显示问号(?),为什么?我该怎么解决呢?

更新

有些事我做得不好。所以我有两个php文件,一个是classA.php文件,在其中我定义了一个类,它从数据库中检索信息,我把这个文件(classA.php)包含到我的default.php文件中,在这里我想看到数据。我有完全相同的表,写在上面,我在写

代码语言:javascript
运行
复制
header('Content-Type: text/html; charset=UTF-8');

在default.php的第一行中,但是仍然不能工作,谢谢您的建议:)

第二次更新

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

代码语言:javascript
运行
复制
header("Content-Type: text/html; charset=UTF-8");

但还是没用。

第三次更新

sql =>

代码语言:javascript
运行
复制
create table ok(
id int(2) not null auto_increment primary key,
name varchar(20) charset utf8 not null);

和php文件

代码语言:javascript
运行
复制
<?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表this=>

代码语言:javascript
运行
复制
insert into ok(name) values("one"),("ერთი"),("two"),("ორი");

PS。特殊字符为格鲁吉亚文:)

结果是英文字很好,格鲁吉亚人也有问号:

它无论如何都不起作用

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-07-13 09:48:09

文件位于UTF-8中这一事实并不一定意味着来自/进入数据库的数据也在UTF-8中。

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

  • 对于mysql,请使用mysql_set_charset($link,'utf8');
  • 对于mysqli,使用mysqli->set_charset('utf8')或与上面的mysqli_相同
  • 对于PDO,当您在DSN字符串中连接包含charset:utf8时。
票数 7
EN

Stack Overflow用户

发布于 2012-07-13 09:40:38

声明HTML编码:

代码语言:javascript
运行
复制
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

和/或在标头中传输编码:

代码语言:javascript
运行
复制
header('Content-Type: text/html; charset=UTF-8');
票数 3
EN

Stack Overflow用户

发布于 2012-07-13 09:41:27

试着

代码语言:javascript
运行
复制
htmlentities($row['name'],ENT_QUOTES);

请参阅htmlentities

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11467861

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档