mysql数据库中存进的是中文,为什么查出来的乱码

mysql数据库中存进的是中文,为什么查出来的乱码,第1张

你的mysql客户端和你的mysql服务器的编码不一样,,应为utf8编码的中文是3个字符,而gbk编码的中文是两个字符,,这样解析出来的中文就是乱码了。。你需要该数据库的字符集编码。。。具体如下:

找到mysql

的ini配置文件

在[client]这里加上default_character_set

=

utf8

在[mysqld]这里加上character_set_server

=

utf8

不出意外应该可以了

首先,这个问题一般都是字符集不匹配的问题;就是说数据库中存储数据用的字符集,和你连接数据库用的字符集不匹配。

然后,就是看你的数据库了

oracle的话

先确认数据库服务所采用的字符集,select userenv('language') from dual;

然后修改客户端的环境变量,比如set nls_lang=AMERICAN_AMERICAZHS16GBK

mysql的话,一般都是用utf8的字符集

在你客户端连接时,也要保证字符集一致才行

其它类型数据库的话,看具体的解决方案

html解析的时候会自动将空白字符过滤掉,如空格、制表符、换行符、回车符,所以输出时需要进行转移

对数据库中的字段用函数replace(字段名,chr(10),'

');

access的中文版默认是GBK格式的,是无法改变字符类型的,所以用php读取的时候会乱码。

解决方法是:使用iconv转换

一、使用 iconv函数制作一个转码的自定义从GBK转到UTF-8的函数,如以下代码:

function enc($c){return iconv('gbk','utf-8',$c);}

二、为了写入数据库的编码是符合数据库需要的,所以我们还要制作一个从UTF-8转向GBK的函数:

function dec($c){return iconv('utf-8','gb2312',$c);}

制作好了转码函数,接下就是正常使用了。在从数据库里面调数据显示在页面的时候使用enc()函数,从页面提交数据到数据库时使用dec()函数,这样就可以很好的解决PHP使用UTF-8编码,ACCESS使用系统默认编码的问题了。

<php  

echo '<p><img src="centergoodsphpaction=show&id='$val['id']'&t='time()'" width="150"></p>';  

        header('content-type:'$b['type']); 

echo $b['pic'];

以上代码在header发送之前有个echo输出了一串字符串有些header信息要求先发送,之前不能有其他输出你将header这句放在echo输出之前

另外,在上面一段代码中,你将上传的数据直接保存到数据库中,然后在下面取出来直接发送给浏览器,这是什么逻辑你发送出去的将是的原始数据,浏览器就是按原样显示,一堆乱码如果你要让它知道这是一张,你也得使用header来标识这是类型的文件当然最后是一个单独的php文件处理并输出格式的数据供<img>调用

byte[] bts=null;

String other = null;

bts = rsgetBytes(i); //读取other字段

if(bts != null)

{

other = new String(bts,"gbk");

}

Access数据库必须先一beyet取出来然后进行转码

这个问题我今天解决了

但是我还有个问题,当表名为中文时,查询会出问题,还有列名为中文时取出来的列名也是乱码。帅哥你知道怎么解决这问题不

如果你只是为了检测查询结果乱码的问题的话,建议你先将代码修改成如下:

ClassforName("commysqljdbcDriver")newInstance();

String url = "jdbc:mysql://localhost:3306/b2buseUnicode=true&characterEncoding=UTF-8";

Connection con = DriverManagergetConnection(url, "root", "root");

//这是运行代码

//Connection con = SQLDBDB();

Statement st = concreateStatement();

//ResultSet rs = stexecuteQuery("select userid,username,company,avatar from b2b_member //where company like '%北京%'");

ResultSet rs = stexecuteQuery("select from b2b_member limit 0,10");

while (rsnext()) {

Systemoutprintln(rsgetInt("userid") + "    :   " + rsgetString("username"));

}

这样首先确保能从数据库中查询到结果,然后看包含有中文的记录是否乱码。

如果确实是中文乱码了,那么你应该看数据库表中对应记录的汉字内容是否在存储的时候就已经乱码了,如果数据库中的内容正常,而查询出来的结果乱码的话,基本上可以肯定数据库存储字段的数据格式跟你url的“utf8”格式拼配不上造成的;

如果这样检查了,数据库字段的存储格式也是"utf8",那么很有可能就是项目的编码格式不是造成java文件编译时,sql语句中的中文发生了乱码,比如myeclipse的默认编码格式就是"GBK";

以上就是关于mysql数据库中存进的是中文,为什么查出来的乱码全部的内容,包括:mysql数据库中存进的是中文,为什么查出来的乱码、把数据库中的中文输出出来为什么乱码、oracle数据库中提取的内容网页显示乱码等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: https://outofmemory.cn/sjk/9734654.html

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

发表评论

登录后才能评论

评论列表(0条)

保存