java文件上传文件名乱码。。

Python020

java文件上传文件名乱码。。,第1张

HttpServletRequest request = ServletActionContext.getRequest()

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.java

tempString = 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',而不用转换成字符串