请教下数据库取出乱码,怎么解决?

2019-09-01 20:05:36 +08:00
 Colorful

前端一枚,刚接触 mysql 不久 这是数据库,内容,数据库显示的是汉字

CREATE TABLE llbook ( Fid int(11) NOT NULL AUTO_INCREMENT, Ftitle varchar(255) DEFAULT '0' COMMENT '标题', Fimg varchar(255) DEFAULT '' COMMENT '默认图片', Fprice int(11) DEFAULT '0' COMMENT '商品价格', PRIMARY KEY (Fid) ) ENGINE=MyISAM AUTO_INCREMENT=1392 DEFAULT CHARSET=utf8

这是 HTML

<meta charset="utf-8"> <meta content="webkit" name="renderer"> <meta content="IE=edge" http-equiv="X-UA-Compatible"> <meta content="width=device-width, initial-scale=1" name="viewport"> <title>Home</title> <meta content="" name="keywords"> <meta content="" name="description">

但是显示页面之后就乱码?请教下,是哪里出的问题?

4375 次点击
所在节点    MySQL
11 条回复
taogen
2019-09-01 20:22:30 +08:00
1. debug 看下后端取出的是不是正确汉字,如果后端取出来是正确的,2. 看下 HTTP response 设置的编码。
Colorful
2019-09-01 20:23:54 +08:00
@taogen 我直接用 PHP 文件读取的数据库,数据库里面是中文,然后取出来之后是乱码
taogen
2019-09-01 20:28:29 +08:00
试下在 php 代码中添加 header
<?php
header("content-type: text/html; charset=utf-8");
Colorful
2019-09-01 20:56:30 +08:00
@taogen 试过,还是乱码,会不会跟导入的数据有关系?但数据库里面显示的是中文
jinliming2
2019-09-01 20:58:14 +08:00
1、检查数据库存储的编码,印象中 MySQL 好像不是默认 UTF-8 (多年不用不太记得了)
2、检查 HTTP 响应头,Content-Type 后面是否指定了 charset 编码,指定的编码是否与数据一致?目前推荐是统一 UTF-8,数据库用 UTF8-MB4。
如果 HTTP 响应头没有指定编码,那么 HTML 里指定的编码才会生效,否则 HTTP 响应头的编码会覆盖 HTML 里的 meta 指定的编码。
可以装个浏览器扩展“ Charset ”调一下看看正确的编码是哪个(国内一般都是 UTF-8、GBK 搞混)。
Colorful
2019-09-01 22:23:35 +08:00
@jinliming2 有装 Charset,还是乱码
Colorful
2019-09-01 22:49:44 +08:00
问题解决了,谢谢大家
在数据读取的时候,加了这个代码就没问题了
$conn->query("SET NAMES 'UTF8'");
hantsy
2019-09-02 09:03:55 +08:00
十几年了一直用 UTF8,没出现过什么乱码。
MySQL 可以改默认编码:
1. 直接修改配置文件。
2. 连接时数据库 URL 加编码参数。
xmai
2019-09-02 09:51:15 +08:00


在 mysql 数据库中,server,database 的字符集都默认是 latin1
在创建表的时候需要指定字符串
create table user(name varchar(11)) default charset=utf8;

或者修改默认字符编码


直接修改 mysql 配置文件 /etc/my.cnf 也行

```
[mysqld]
character-set-server=utf8
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
```
Colorful
2019-09-02 12:24:05 +08:00
@xmai 涨知识了,感谢
Colorful
2019-09-02 12:24:17 +08:00
@hantsy 明白了,太感谢了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/596984

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX