struts2.0上传多个文件,中文文件名乱码

whmjxa 2008-12-01 03:03:01
如题,中文文件名乱码该如何解决?

if (uploads != null)
{
File dir = new File(dirName);
if(!dir.isDirectory())
dir.mkdirs();
int i = 0;
for (; i < uploads.size(); i++)
{
java.io.InputStream is = new java.io.FileInputStream(uploads.get(i));
java.io.OutputStream os = new java.io.FileOutputStream(
dirName + }new String(fileNames.get(i).getBytes("gb2312"),"iso-8859-1"));
byte buffer[] = new byte[8192];
int count = 0;
while ((count = is.read(buffer)) > 0)
{
os.write(buffer, 0, count);
}
os.close();
is.close();
}

...全文
723 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiongkun620 2011-07-13
  • 打赏
  • 举报
回复
谢谢!
songjun37 2008-12-01
  • 打赏
  • 举报
回复
没有就新建一个撒
whmjxa 2008-12-01
  • 打赏
  • 举报
回复
还是不行呀,我在struts.xml中加了
<constant name="struts.i18n.encoding" value="GBK"/>

代码里改成
 java.io.OutputStream os = new java.io.FileOutputStream(
dirName + new String(fileNames.get(i).getBytes("GBK"),"utf-8"));

中文文件名还是?
  • 打赏
  • 举报
回复
struts上传文件用的是gbk编码方式,所以将文件名转码就可以。

new String(filename.getBytes("GBK"),"UTF-8");
这里有个问题,网上经常有人将编码格式改称gbk或者是gb2312,
不过为了国际化和通用性,我建议还是用UTF-8编码格式。
毕竟现在的开发工具大部分都是国外的,对UTF-8的支持到位。
同时国际化也方便。

你这里struts上传文件用的是gb2312编码方式,那你就
new String(filename.getBytes("GB2312"),"UTF-8");
whmjxa 2008-12-01
  • 打赏
  • 举报
回复
没有呀 ,只有一个struts.xml
songjun37 2008-12-01
  • 打赏
  • 举报
回复
放在 classpath 下面

相对于在myeclipse 工程的src下 就可以了
whmjxa 2008-12-01
  • 打赏
  • 举报
回复
在struts2.0中,struts.properties 这个文件在哪儿?
songjun37 2008-12-01
  • 打赏
  • 举报
回复
要在struts.properties 文件中要配置一个 信息

struts.i18n.encoding = gbk

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧