java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言, 是由 Sun Microsystems 公司于 1995 年 5 月推出的 Java 程序设计语言和 Java 平台 (即 JavaEE(j2ee), JavaME(j2me), JavaSE(j2se)) 的总称
这篇文章主要为大家详细介绍了 java 中文传值乱码问题的解决方法, 具有一定的参考价值, 感兴趣的小伙伴们可以参考一下
一般编码格式设置:
1. 可以经过两次编码处理, 即设置字符集后, 在插入前解码字符集, 也是最有效的方式
设置字符集:
- String value = null;
- try {
- value = URLEncoder.encode(jsonObjectPar.getString(value), UTF - 8);
- } catch(UnsupportedEncodingException e) {
- e.printStackTrace();
- }
解码字符集:
- String value = null;
- try {
- value = new String(value.getBytes(iso - 8859 - 1), UTF - 8);
- } catch(UnsupportedEncodingException e) {
- e.printStackTrace();
- }
2. 直接处理:
userName = new String(userName.getBytes(ISO-8859-1), UTF-8);
3. 如果断点跟的时候插入的时候是中文, 到数据库后乱码, 一般是数据库没有设置为 UTF-8;
首先查看数据库编码(MySQL 为例):
数据库查询中运行: show variables like character%'; 查看所有编码信息
修改不是 UTF-8 的字符集, 主要查看 datebase 是否是 UTF-8, 命令
- show variables likecharacter % ';
- ++-+
- | Variable_name | Value |
- ++-+
- | character_set_client | latin1 |
- | character_set_connection | latin1 |
- | character_set_database | latin1 |
- | character_set_filesystem | binary |
- | character_set_results | latin1 |
- | character_set_server | latin1 |
- | character_set_system | utf8 |
- | character_sets_dir | /usr/share/mysql/charsets/ |
- ++-+'
从以上信息可知数据库的编码为 latin1, 需要修改为 gbk 或者是 utf8;
其中, character_set_client 为客户端编码方式; character_set_connection 为建立连接使用的编码; character_set_database 数据库的编码; character_set_results 结果集的编码; character_set_server 数据库服务器的编码, 只要保证以上四个采用的编码方式一样, 就不会出现乱码问题
4. 从后台到页面乱码的问题:
返回数据之前先设置字符集:
response.setCharacterEncoding(utf-8);
5.jsp 页面到后台乱码:
5-1.jsp 的编码设置为 utf-8
5-2. 后台这样判断
- String name = request.getParameter(ABC);
- if (name.equals(new String(request.getParameter(ABC).getBytes(iso8859 - 1), iso8859 - 1))) {
- name = new String(name.getBytes(iso8859 - 1), UTF - 8);
- }
get 方式提交的编码是 iso8859-1
来源: http://www.phperz.com/article/18/0213/359334.html