if (request.getHeader("User-Agent").toLowerCase().indexOf("firefox") >0){
try {
filename = new String(filename.getBytes("UTF-8"), "ISO8859-1")
} catch (Exception e) {
e.printStackTrace()
}//firefox浏览器}
}else {
try {
filename = URLEncoder.encode(filename, "UTF-8")
} catch (Exception e) {
e.printStackTrace()
}//IE浏览器
}
java出现乱码的原因是
.java 文件中的编码格式和命令提示符的指令不一致导致的
比如.java 使用的是utf-8,windows环境下命令提示符编码是gbk,在使用javac 命令进行对.java文件进行编译的时候,.java文件中的中文字符就会出现 乱码.
出现这样的情况,处理方式是通过现在编译编码-encoding 处理
javac -encoding utf-8 Test.javatempString = new String(bs, 0, rSize)这句有2个问题:
1、文件内数据是以什么字符编码存进去的,如果是GBK,那就得
new String(bs, 0, rSize, "GBK")
否则有可能数据不能正常转换而数据丢失
不写则使用缺省编码,这个可以通过System.getProperty("file.encoding")查看。
相应的line.getBytes也可能会遇到同样的问题
2、如果你读进来的最后一个字节正好是某个字符的前8位,那你这new String肯定会出错,不论编码是否正确设置,譬如汉字"我"在GBK里2个字节,你正好只读出前一个字节,你就不可能正确了
建议:直接读入byte数组然后查找并删除'\n',而不用转换成字符串