日期:2014-05-17  浏览次数:20780 次

Myeclipse中接收中文参数乱码

小弟自习java web方面东西,在Myeclipse中将编码都设置为UTF-8,在HTML,JSP页面中 中文显示以及提交都没出现过问题。最近在学习hibernate相关知识中,通过hibernate框架向Mysql中插入数据时 (没用到tomcat),数据库出现乱码,起初以为是数据库问题(我的Mysql数据库编码都是UTF-8,和Myeclipse中一样),后来在程序中 添加了一条输出语句发现,myeclipse在接收中文参数时出现问题:用Scanner类next()方法接收了一个String name;"你好" 输出为--->"浣犲ソ"

Java code

import java.util.Scanner;

public class Test {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        String name=sc.next();
        System.out.println("name为:"+name);
    }

}



后来将Test.java文件编码改为GBK 代码中name后的“为”字又变为乱码,不过此时中文接收反而正常了,输入为“你好”输出也为“你好”,难道以后像这种 与Web无关的纯Java文件 中文参数的处理只能改编码为GBK吗?有没有 好的处理方法,求指教

------解决方案--------------------
1、首先,在先建文件的时候要先确定你的文件是否是utf-8编码,确定之后再开始编码,当你在写完代码之后再看是不是utf-8编码的时候,如果发现不是此编码,在你转的时候以前非utf-8编码会转为乱码,例如中文。
2、不知道你的参数是form提交的还是url传递的。form提交的只要将jsp/html编码转为utf-8,应该是没有问题的,如果是url传递的话,由于url在地址栏的时候在传递的过程中会自动转为iso-885(多少来着忘了)编码,所以在传递之前有encode一下,这样就不会再传递过程中自动转码,java中用java.net.URLEncode.encode()方法,js中用encodeURI方法
------解决方案--------------------
数据库出现乱码,和控制台出现乱码完全是两码事!!
用的Mysql数据库吧,连接的时候url后面要加一条设置utf-8的语句。
编写Connection URL时,加上?useUnicode=true&characterEncoding=utf-8

java控制台输出本来就是gbk格式的编码。