String strChina="中国";
byte buf[]=strChina.getBytes("ISO8859-1");
System.out.println(buf.length);
String str=new String(buf,0,buf.length);
System.out.println(str);
String str1=new String(str.getBytes("ISO8859-1"),"gb2312");
System.out.println(str1);为什么str1输出是乱码呢?我已经转化了啊
byte buf[]=strChina.getBytes("ISO8859-1");
System.out.println(buf.length);
String str=new String(buf,0,buf.length);
System.out.println(str);
String str1=new String(str.getBytes("ISO8859-1"),"gb2312");
System.out.println(str1);为什么str1输出是乱码呢?我已经转化了啊
楼主【shunzi__1984】截止到2008-07-17 10:46:51的历史汇总数据(不包括此帖):
发帖的总数量:11 发帖的总分数:180 每贴平均分数:16
回帖的总数量:9 得分贴总数量:0 回帖的得分率:0%
结贴的总数量:11 结贴的总分数:180
无满意结贴数:5 无满意结贴分:160
未结的帖子数:0 未结的总分数:0
结贴的百分比:100.00% 结分的百分比:100.00%
无满意结贴率:45.45 % 无满意结分率:88.89 %
敬礼!
http://blog.csdn.net/rascalboy520/archive/2008/06/06/2516038.aspx
strChina.getBytes("ISO8859-1");得到的就已经不对了,应该是
strChina.getBytes("gb2312");
byte buf[] = strChina.getBytes("ISO8859-1");编码后,两个字节都是63 63String str = new String(buf, "ISO8859-1");
求其逆,无法找到对应值
如果原串是ascii字符,则可以
像楼上那样,当然可以正确显示,我现在就是对中文进行ISO8859-1编码成字节数组,然后想办法
正常显示,我的思路是编码解码后.然后用ISO8859-1还原,然后用GBK解码,理论上应该是可以
正常显示的,,,,,,请大家就事论事.
你在JAVA里直接分配的String对象,默认就是以gb进行编码的如果要测那iso的转化,你可以用html,并且此页面的编码使用gb以外的编码,例如iso或者utf
来提交一个中文参数,这个时候你在servlet上直接打印这个字符串看看
另外我测了下,用ISO-8859-1获取byte数组得到的肯定是乱码,charset只好用gb2312,gbk,gb18030,utf-8,这样可以保证第一次打印不乱码
保证第二次打印不乱码,需要charsetAfter 等于charsetBefore 。
如下:
public class A {
public static void main(String[] args) throws Exception {
String charsetAfter = "gb2312";
String charsetBefore = "gb2312";
String strChina = "中国";
byte buf[] = strChina.getBytes(charsetAfter);
System.out.println(buf.length); String str = new String(buf, charsetAfter);
System.out.println(str);
String str1 = new String(str.getBytes(charsetBefore), charsetAfter);
System.out.println(str1);
}
}