java的String.getBytes()方法,编码问题

我按照这个写,没有问题,中文可以转换:
public void setFileName(String fileName) throws UnsupportedEncodingException {
this.fileName = new String(fileName.getBytes("ISO-8859-1"),"UTF-8");
}

但是,我按照这个写,中文就无法转换了,不明白为什么。
public void setFileName(String fileName) throws UnsupportedEncodingException {
this.fileName = new String(fileName.getBytes(),"UTF-8");
}

String.getBytes()方法是使用平台默认的字符集,把这个String类型编译成byte序列。
可是为什么用ISO-8859-1可以正确的转换中文,而不写参数却不行呢?

要先知道fileName原先的编码,才好清楚用哪个编码来取得byte[]。

如果不知道原来的编码、又用错了编码的参数,就只有乱码了。
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-01-17
默认编码一般是GBK编码吧?String.getBytes()不是ISO-8859-1,而是GBK编码,所以会出现乱码
第2个回答  2013-01-17
你用的是IE版本是?
第3个回答  2013-01-17
请看参考资料 是讲解 Java字符编码根本原理 文章篇幅不长 非常容易理解,而且讲了为什么不要调用不带参的方法

参考资料:http://blog.csdn.net/zhouyong0/article/details/6047410

求教大神,java中关于String类的getBytes()方法的问题
在Java语言中,对于byte、short等整形数据,它的控制台输出都是10进制的,getBytes()[0]的byte十六进制显示为CE,转换成10进制就是-50,所以控制台打印的是-50。

java中文乱码,能说下string.getBytes()和new String()转码是,具体点...
1、Java中,【String.getBytes(String decode)】的方法,会根据指定的decode,编码返回某字符串在该编码下的byte数组表示,例如:byte[] b_gbk = "中".getBytes("GBK");byte[] b_utf8 = "中".getBytes("UTF-8");byte[] b_iso88591 = "中".getBytes("ISO8859-1")上面三行代码表示:分别...

从String.getBytes 理解 Java 编码和解码
内存中的Java字符串使用Unicode编码,可以转换为其他编码,如GBK或UTF-8。例如,赵的UTF-8编码为11101000 10110101 10110101,而GBK编码为D5D4。在处理文件时,如果文件编码与字符串的内码不匹配,可能会导致乱码问题。正确的方法是确保在读取和转换时使用正确的编码格式,而不是试图直接修正乱码的字符串。...

求教大神,java中关于String类的getBytes()方法的问题
又byte要显示为1010这种形式,在JAVA的API Byte中是没有提供的,而在Integer中提供有toBinaryString()这个类方法可将一个数字以二进制的方式显示,所以需要将该byte转换为int之后再调用Integer.toBinaryString(int)方法来显示二进制字符串。又“我”的GBK编码是ced2,所以"我来了".getBytes()[0]得到的...

java中String对象的getBytes方法是干什么的?
String的getBytes()方法是得到一个系统默认的编码格式的字节数组 getBytes("utf-8") 得到一个UTF-8格式的字节数组 如果你的java指定UTF-8编码则两个方法返回的数组一样。如果你java工程是GBK的两个方法返回不同。

关于java中String.getBytes()问题
getBytes():使用平台的默认字符集将此 String 编码为 byte 序列,并将结果存储到一个新的 byte 数组中。 当此字符串不能使用默认的字符集编码时,此方法的行为没有指定。如果需要对编码过程进行更多控制,则应该使用 CharsetEncoder 类。http:\/\/www.blogjava.net\/baizhihui19870626\/articles\/388054....

java中String.getBytes()的用法
str.getBytes() 返回一个字节数组 调用一次返回的都是一个新的数组对像, 你打印的是对象引用的哈希码(不是对像里面的内容),肯定是不一样的(因为每次返回都是一个新的变量).他们的内容是一样的.

java中的String的getBytes()方法可以获取3个byte,那么如果知道3个byt...
String s = new String(byte[] b);就得到一个汉字了。如果出来的汉字有乱码,可以设置编码:String s = new String(byte[] b,String charset);

字符编码问题
一. Unicode编码, \/uff01,四位六进制码 在Java中,String.getBytes(String decode)方法会根据指定的decode编码返回某字符串在该编码下的byte数组表示 ,如 byte[] b_gbk = "中".getBytes("GBK");byte[] b_utf8 = "中".getBytes("UTF-8");byte[] b_iso88591 = "中".getBytes("ISO...

jsp脚本中与java中的String.getBytes()方法的问题
iso-8859-1 只能获取英文的的编码。汉字它不认,所以就解析成?问号了,问号的ascii码为63,所以汉字都变成问号了,汉字应该用utf-8 或者gbk来解析才行

相似回答