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

哪位大侠能解释下这现象吗
我用的数据库时mysql5.5,里面的编码参数如下:
default-character-set=utf8
character-set-server=utf8
default-character-set=utf-8
default-collation=utf8_general_ci

用的是java写的代码,确定代码里的编码都已经统一为了utf-8,结果在保存中文时,出现下图现象:
mysql的dos窗口显示:

navicat界面的显示:

navicat界面显示正常,dos窗口还是乱了,
验证时,结果取出的都是正常的中文,这现象哪位大侠能解释下吗,小菜鸟比较喜欢用dos窗口,所以望大侠们赐教,,
------最佳解决方案--------------------
测试了一下是dos下,把utf-8格式的字符,按"gbk"格式输出了。
楼主可以用下面的代码测试:

import java.io.*;
public class Codetest
{
public static void main(String[] args) throws Exception
{
File file=new File("文档.txt");
BufferedReader bf=new BufferedReader(new FileReader(file));
String s=bf.readLine();
byte[] b=s.getBytes("utf-8");
String s2=new String(b,"gbk");
System.out.println("s2 is "+s2);
}
}


文档.txt用utf-8编码方式存入两个字:张三
输出:
s2 is 寮犱笁
------其他解决方案--------------------
不知道你写没写实体类,如果写了的话,把里面的对象的顺序改成和你数据库建表的字段顺序一样。并且实体类中的get方法和set方法的顺序也要和对象的顺序一样。
------其他解决方案--------------------
实体类写了,而且顺序都跟楼上说的一样,不过个人觉得这和实体类中的get,set方法顺序没啥关系吧,只是个人短见哈
------其他解决方案--------------------
嗯,查看了下dos窗口的属性,还真是gbk,大侠有啥方法能修改为utf-8吗
------其他解决方案--------------------
哎,一番折腾,总算找到解决办法了,如果是utf8编码,原来在dos下每次操作前,得先将显示结果编码set character_set_results='gbk'