应该使用String.getBytes().该方法根据你系统的字符编码做转换。如果你的系统字符时GB2312
,那么它等同于String.getBytes("gb2312").你只有使用系统当前的编码格式,才能获取完整的字符ascii编码。使用getBytes()后,字符窜将编码为ISO-8859-1的格式。实际上,在网络中传送的编码格式基本都用ISO-8859-1。你可以在解码的那一端使用new String(encodedString.getBytes("GB2312")),来获得解码端的本地显示。直接使用getBytes("Shift_JIS")会丢失字符信息,你获得的只是字符的前半部分编码,所以总是相同的。
不知道这样说,你看明白没!

解决方案 »

  1.   

    Shift_jis和GB2312是两个并列的概念吧,一个是日本用的一个中国用的。如果是标准的日文字,上面的代码是可以正确获得编码,且能够正确显示。 但是如果是外字,java转换的时候会认为它不属于shift_jis字符集,于是会固定转成一个code.  另外在tomcat下,在设置request.setCharacterEncoding("shift_jis")之后,tomcat调用的估计就是java目前通用的处理方式,所以页面输入的外字都被转错了。  后来我更换为websphere5.0, 居然能够正确转化,想想是不是websphere调用了自己的转换实现, 而在这个实现里支持了shift_jis字符编码预留给扩充外字的编码。以上自己猜测,望指正。