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

标签:

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));
由于两种格式的日期数据在英文操作系统下有两种效果,所以在使用这种方式转换进行日期转换的时候会出现异常。建议只选用某种方式转换。

转载于:https://www.cnblogs.com/qingtian-wjp/archive/2013/03/26/2982661.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值