java导出文件名乱码

本文介绍了在JavaWeb项目中,当项目部署在Linux环境下导出文件名出现乱码的问题。作者尝试了通过修改字符串编码、使用URLEncoder/URLDecoder以及调整Linux系统和Tomcat的字符集设置等方法来解决。最终,通过在Tomcat的catalina.sh中添加`export LC_ALL="zh_CN.UTF-8"`并重启服务器,成功解决了乱码问题,而无需修改Linux系统的默认字符集。
摘要由CSDN通过智能技术生成

问题背景:javaWeb项目导出文件名乱码。本地window7调试项目导出文件名正常,线上linux(centos7)环境导出文化名乱码。
依据百度经验做尝试:
**1)**使用String newStr = new String(“xxx”.getByte(“字符类型1”),“字符类型2”)并没有起到任何积极作用;后来得知,此方法的用途是这样的:java程序获取到一个字符串(各种可能的途径获取),发现此字符串是乱码的(可以直接控制台打出来或者debug看),然后可以用这个new String方法将乱码的字符串转为正常中文(前提是你要知道乱码字符串的编码方式,然后用newStr = new String(乱码字符串.getBytes(乱码字符串的编码字符集),java项目字符集),这个newStr就是正常显示的中文字符串。)所以我认为这个方法不能解决我的问题,因为我其中一个linux的系统字符集就是utf-8(en_US.UTF-8),而我的项目是utf-8的
**2)**使用URLEncode(“xxx”,"")与URLDecode(“xxx”,"")并没有起到任何积极作用;后来得知,此方法用于url交互,为了防止url中的中文信息乱码倒置信息丢失或错误,encode与decode要成对使用的,前端可以先encode用字符集c1编码,然后后端对应用decode用c1编码,当然前后端传输只是一个案例,此方法应当可以作为防止传输造成乱码的一种策略。所以我认为乱码问题是不能用encode与decode这两个方法解决的。
**3)**修改linux系统的字符集。
查百度知,最有可能是linux系统默认编码不是

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值