MYSQL数据库乱码解决方案
来源:互联网 发布:js apply原理 编辑:程序博客网 时间:2024/06/02 05:31
数据库层面的乱码
数据库的默认编码方式为latina
而我们集成开发时通过JDBC或者Hibernate写入数据时从前端获取的通常都是utf8,自然会出现乱码
可以通过show variables like ‘char%’查看数据库的编码方式
而在命令行中set names utf8可解决乱码问题,但此次设置只对本次有效,如果开发过程中忘了在存之前切换到数据库进行设置依然会乱码
命令character-set-client 编码设置数据库的客户端发送编码方式
character-set-connection编码设置数据库转化器的编码方式
character-set-results编码设置客户端接受的(返回结果)
但最好的方式是写入mysql的配置文件
在win下配置文件时mysql的主目录下的my.ini,在linux下是etc目录下的my.cnf
设置客户端
[client]default-character-set=utf8
设置服务器端
在老版本中和设置客户端的方法一致
[mysqld]default-character-set=utf8
但5.6以后的版本改成了下面的命令
character-set-server=utf8
如果你不确定就试一下,如果出现1067错误就是配置文件有误,改成另一种形式即可
最后查看一下,我的已经生效了’char%’
web层面乱码:
1.响应乱码的原理
字节方式输出数据:
response.getOutputStream().write(“中国”.getBytes(“utf-8”));
服务器在发送中文数据时,使用的是UTF-8码表,IE浏览器没有特别指定码表时,将使用所在操作系统的默认码表,gb2312,utf-8的数据用国标2312打开就自然出现乱码问题
解决方法
在HTTP协议中提供了Content-Type响应头:
response.setHeader("Content-Type","text/html;charset=utf-8");response.getOutputStream().write("中国".getBytes("utf-8"));
快速设置的方法:
response.setContentType("text/html;charset=utf-8");
字符方式输出数据:
Response.getWriter().write(“中国”)输出数据给浏览器,则服务器会在发送数据时将字符转换为字节后发送,tomcat6默认的编码方式为iso8859-1,不支持中文的读写,则变成了”?”
解决方法
把服务器设置为发送数据时使用的正确码表即可,两码相同防止乱码
设置浏览器打开和发送数据的编码方式
response.setContentType("text/html;charset=utf-8");response.setCharacterEncoding("utf-8");response.getWriter().write("中国");
2.请求乱码的原理
浏览器发送请求的编码会和打开表单页面时使用的编码一致
设置方式为pageEncoding
服务器的解析则是默认编码方式,tomcat默认的iso8859-1解码,而自生设置utf-8编码,utf-8三个字节一个汉字,iso8859-1一个字节一个字符,则中国在utf-8的编码下为6个字节,iso8859-1下则显示6个问号
解决思路
对post提交做设置
request.setCharacterEncoding("utf-8");
设置utf8处理请求参数,但有一定的作用域和处理范围,只能处理post
对于get提交的乱码
可以使用底层转化:
String addr = request.getParameter("addr");
将乱码解析为二进制数据
byte bs = addr.getBytes("iso8859-1");
解码方式换成utf8
addr = new String(bs,"utf-8");
注意
有可能你已经改好了可是还是乱码存在,那是因为你原来的表和库依然为拉丁的编码,并没有改成utf8,所以会出现这样的问题,对应修改即可,如果查看表则使用
show create table table_name\G
- MySql数据库乱码解决方案
- MYSQL数据库乱码解决方案
- mysql数据库乱码解决方案
- asp链接mysql数据库中文乱码解决方案。
- jsp写入mysql数据库中文乱码解决方案
- java连接mysql数据库乱码的解决方案
- Mac 下Mysql数据库中文乱码解决方案
- 连接 MySql 数据库,中文乱码解决方案
- hibernate 连接 mysql 数据库中文乱码解决方案
- MySQL数据库基础-MySQL字符集乱码问题最终解决方案
- 关于delphi2010读取MySQL数据库TEXT类型乱码的解决方案
- java(jsp)使用MySql数据库,中文乱码的完整解决方案
- mysql写入数据库后,数据出现乱码问题的解决方案
- C# 连接MYSQL数据库 列名中文乱码解决方案
- MySQL数据库导出SQL脚本出现乱码的解决方案
- 插入数据库是出现乱码的参考解决方案:mysql
- MySQL数据库中插入中文出现乱码的解决方案
- 数据库中文乱码解决方案总结,tomcat+mysql+hibernate
- iOS小项目-使用Slider完成三种颜色的改变
- mina源码分析---4
- MFC程序引导过程(二)
- ACE中ACE_SOCK下ACE_SOCK_Acceptor类解析
- pthread_cond_signal虚假唤醒(spurious wakeup)
- MYSQL数据库乱码解决方案
- Linux gcc,gdb命令及vim配置
- Objective-C中对IPhone设备震动的调用
- python 基本知识学习
- JAVA 集合框架
- linux 命令及shell 知识小点汇集
- C++字符串格式化文章
- 昌大软院大神养成计划之网页设计之路第三天
- 图像平均融合