java上传文件名编码格式_java - servlet文件上传文件名编码 - 堆栈内存溢出

我使用Apache Commons Fileupload工具进行标准文件上传。 我的问题是,如果上传文件包含特殊字符(á,é,ú等),我无法获得正确的文件名。它们都被转换为? 迹象。

request.getCharacterEncoding()表示UTF-8,但我在字符串fileItem.getName()中得到的字节对于我所有的特殊字符都是相同的。

你能帮我解决什么问题吗?

(一些细节:在Windows上使用Firefox 3.6.12,Weblogic 10.3)

这是我的代码片段:

public CommandMsg(HttpServletRequest request) {

Enumeration names = null;

if (isMultipart(request)) {

FileItemFactory factory = new DiskFileItemFactory();

ServletFileUpload upload = new ServletFileUpload(factory);

try {

List uploadedItems = upload.parseRequest(request);

Iterator i = uploadedItems.iterator();

FileItem fileItem = null;

while (i.hasNext()) {

fileItem = (FileItem) i.next();

if (fileItem.isFormField()) {

// System.out.println("isFormField");

setAttribute(fileItem.getFieldName(), fileItem.getString());

} else {

String enc = "utf-8";

enc = request.getCharacterEncoding();

String fileName = fileItem.getName();

byte[] fnb = fileItem.getName().getBytes();

byte[] fnb2 = null;

try {

fnb2 = fileItem.getName().getBytes(enc);

String t1 = new String(fnb);

String t2 = new String(fnb2);

String t3 = new String(fnb, enc);

String t4 = new String(fnb2, enc);

} catch (UnsupportedEncodingException e) {

e.printStackTrace();

}

setAttribute(fileItem.getFieldName(), fileItem);

}

}

} catch (FileUploadException ex) {

ex.printStackTrace();

}

// etc..

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值