java的String.getBytes()方法,编码问题
我按照这个写,没有问题,中文可以转换:publicvoidsetFileName(StringfileName)throwsUnsupportedEncodingExce...
我按照这个写,没有问题,中文可以转换:
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可以正确的转换中文,而不写参数却不行呢? 展开
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可以正确的转换中文,而不写参数却不行呢? 展开
4个回答
推荐于2016-10-12
展开全部
要先知道fileName原先的编码,才好清楚用哪个编码来取得byte[]。
如果不知道原来的编码、又用错了编码的参数,就只有乱码了。
如果不知道原来的编码、又用错了编码的参数,就只有乱码了。
展开全部
默认编码一般是GBK编码吧?String.getBytes()不是ISO-8859-1,而是GBK编码,所以会出现乱码
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
请看参考资料 是讲解 Java字符编码根本原理 文章篇幅不长 非常容易理解,而且讲了为什么不要调用不带参的方法
参考资料: http://blog.csdn.net/zhouyong0/article/details/6047410
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询