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