上传文件,文件名乱码。(netty文件服务器)

本文探讨了使用Netty构建文件服务器时遇到的文件名乱码问题,并提供了解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这确实是个很好的办法。

 accept-charset 一个很少用到的表单属性,利用它实现在不同编码的页面里实现表单的提交也是一种很方便的解决方法。记录在此。

问题背景:

就是啥呢,就是,ie提交乱码,火狐,谷歌,都是好的,但是,ie乱了。。。,尤其是表单提交文件的时候。为啥。。f12调试ie(ie9)发现,ie没有进行编码直接用汉字提交了。
所以解决的思路是指定编码,提交前告诉浏览器用什么编码解析。
也就是document.charset='utf-8' 。
下面的是网上找的别人写的。但是,走了点弯路,因为我是ajax提交的,按照下面说的改代码后,一直没效果。直到无意中看到一个提问说:form sumbmit按钮提交不乱码,ajax乱码了。。。。我顿悟了。
于是我把document.charset='utf-8' 放到了
$("#id").ajaxSubmitfun({
beforeSumbmit:function(){
document.charset='utf-8' ;
}

})

jquery-form.js;
果然好了!!!
不用区分浏览器。
后台直接获取就可以了。
当然,后台最保险的做法是 new String(str.getBytes("ISO-8859-1"),"UTF-8"); UTF-8要于上面document.charset设置的保持一致
注意 我是提交文件 获取文件名的时候乱码。
好在,走弯路的时候思路没有变,否则就要麻烦了。

另外一个思路是,
request.setcharacterencoding。这个就要麻烦一些了,因为不同的浏览器,比如ie与非ie提交过来的编码就不一样,所以可能要判断一下,多次设置。
而且netty封装的Httprequset似乎不是很好设置。
下面是别人的答案:
解决方案:

当然了,可以自己使用ICONV或者MB扩展来转换编码,但这不是我们要的。 
在W3里介绍了一个不太常见的属性:accept-charset,用它可以完成我们的需求。 
在GBK编码的页面里编写如下代码: 
<form method="post" action="..." accept-charset="utf-8"> ... </form> 

如此的代码在Firefox等正常的浏览器下没有任何问题,但是遇到IE这个变态浏览器就不灵光了,我们还得用点不入流的手段Hack一下: 
<form method="post" action="..." accept-charset="utf-8" οnsubmit="document.charset='utf-8';"> ... </form> 

剩下的工作浏览器会搞定。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值