为什么 数据库提取中文是乱码?

为什么 数据库提取中文是乱码?,第1张

从后台读取数据时,通常会出现乱码情况,比如“汉字”变成“?”等,造成这种情况的原因通常是编码设置不对,解决方法如下:

第一种方法:在php中添加如下代码,将编码格式设为“utf-8”,代码如下:

header("Content-Type: text/htmlcharset=UTF-8")

第二种方法:在php中添加另外一行代码,同样用来转码,代码如下:

$conn = mysqli_connect($servername, $username, $password, $mysqlname)

$conn->query("SET NAMES utf8")

该种情况是先创建链接,之后再转码。

另外,在使用数据库时,直接手动(非代码)建表,通常会在表中输入汉字时,浏览时无法显示或显示为“?”,造成这种情况的原因也是编码问题,解决方案如下:

在建表或建库时,表和库的编码格式一定要统一,设置成:“utf8_general_ci”,如下图:

jsp读取数据乱码原因如下:

1、JSP连接数据库语句指定的编码不正确

解决方案:在JSP连接数据库的语句中,带上useUnicode=true&characterEncoding=UTF-8&autoReconnect=true

2、JSP页面没有指定数据提交的编码,就会造成乱码:

解决方案:这种乱码的情况,只需在页面开头加上request.setCharacterEncoding("GBK")指定提交的即可。

一般是web服务器页面的编码与数据库不一致导致

比如做一些设置<%@Language=JScript @CodePage=936%>

1,<%@codepage="65001"%>

2,<http-equiv="Content-Type" content="text/htmlcharset=UTF-8">

3,Session.CodePage = 65001

4,文件存成 UTF-8

大部分数据库都支持以unicode编码方式,

所以解决与数据库之间的乱码问题比较明智的方式是直接使用unicode编码与数据库交互。

很多数据库驱动自动支持unicode,如Microsoft的SQLServer驱动。

其他大部分数据库驱动,可以在驱动的url参数中指定,如mm的mysql驱动:

jdbc:mysql://localhost/WEBCLDB?useUnicode=true&characterEncoding=GBK。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10070571.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-04
下一篇 2023-05-04

发表评论

登录后才能评论

评论列表(0条)

保存