.中英文系统底层编码导致乱码问题

标签:

it

分类: 技术点滴
    在程序中,若使用涉及到编码的方法,如getBytes(),并且未指定编码,则使用系统底层编码,而中英文系统的底层编码是不同的,中文系统如Win7为GB18030,Win Server2003为GBK,均为中文编码,英文系统如Win Server 2008为Cp1252,在使用getBytes()获得中文输入流时,若未指定编码为GBK之类,则英文系统的服务器无法获得正确的输入,为乱码,此时指定getBytes("GBK")即可。


日期问题:
================================================================================
英文操作系统下:
Java代码:
    Date date = new Date();
    SimpleDateFormat dateFormat1 = new SimpleDateFormat("yyyy-MM-dd");
    Date date01 = dateFormat1.parse(dateFormat1.format(date));
    System.out.println(dateFormat1.format(date));
    System.out.println(date01);
输出结果:
    2013-01-09
    Wed Jan 09 00:00:00 CST 2013
Java代码:
    DateFormat dateFormat2 = DateFormat.getDateInstance();
    Date date02 = dateFormat2.parse(dateFormat2.format(date));
    System.out.println(dateFormat2.format(date));
    System.out.println(date02);
输出结果:
    Jan 9, 2013
    Wed Jan 09 00:00:00 CST 2013
================================================================================
中文操作系统下:
Java代码:
    Date date = new Date();
    SimpleDateFormat dateFormat1 = new SimpleDateFormat("yyyy-MM-dd");
    Date date01 = dateFormat1.parse(dateFormat1.format(date));
    System.out.println(dateFormat1.format(date));
    System.out.println(date01);
输出结果:
    2013-01-09
    Wed Jan 09 00:00:00 CST 2013
Java代码:
    DateFormat dateFormat2 = DateFormat.getDateInstance();
    Date date02 = dateFormat2.parse(dateFormat2.format(date));
    System.out.println(dateFormat2.format(date));
    System.out.println(date02);
输出结果:
    2013-1-9
    Wed Jan 09 00:00:00 CST 2013
出错分析:
    Date date = new Date();
    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
    DateFormat dateFormat1 = DateFormat.getDateInstance();
    date = dateFormat1.parse(dateFormat.format(date));
由于两种格式的日期数据在英文操作系统下有两种效果,所以在使用这种方式转换进行日期转换的时候会出现异常。建议只选用某种方式转换。

posted on 2013-03-26 15:30  一米阳光_萍  阅读(480)  评论(0编辑  收藏  举报

导航