下载的文件名变成乱码怎么成,filename 输出正常不乱码,再往下字符数组出问题了怎么改?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了下载的文件名变成乱码怎么成,filename 输出正常不乱码,再往下字符数组出问题了怎么改?相关的知识,希望对你有一定的参考价值。

public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, java.io.IOException
request.setCharacterEncoding("UTF-8");

// 要下载的文件名
//String filename=request.getParameter("file");
String filename = new String(request.getParameter("file").getBytes("ISO8859_1"),"UTF-8");
System.out.println("+++++++ "+filename);

//发送邮件
Text email = new Text();
email.sentTo("liufeng", filename+"文件的邮件已经接受!");

// 文件真实地址
String filePathname = UploadUtil.getUploadPath()+File.separator+filename;

// 设置内容格式
response.setContentType("text/x-msdownload");

// 设置文件头信息
response.setHeader("Content-Disposition","attachment; filename=" + filename + "");

OutputStream outputStream = response.getOutputStream();
InputStream inputStream = new FileInputStream(filePathname);

byte[] cbuf = new byte[1024]

int i = -1;
while ((i = inputStream.read(cbuf)) != -1)
outputStream.write(cbuf, 0, i);

outputStream.flush();
outputStream.close();
inputStream.close();
outputStream = null;

你可以在web.xml中配置一下编码格式,整个都换成“UTF-8”,或者整体一致的编码。 参考技术A 这里的转换编码,要和java文件的编码一致。 参考技术B 加一个filter,做编码过滤嘛。 参考技术C 建议fileName 不要经过编码,设置在from中设置一个变量专门存放文路径,然后到action 中通过form对想得到文件路径,在截取得到fileName.我项目中出现过类似的问题。. 参考技术D 在线等答案

为啥用JCE加密明文之后输出的密文变成乱码?

public byte[] dncryptData(byte[] s,byte[] key) throws Exception

// DES算法要求有一个可信任的随机数源
SecureRandom sr = new SecureRandom();
//从原始密钥数据创建DESKeySpec对象
try

DESKeySpec dks = new DESKeySpec(key);

//创建一个密钥工厂,然后用它把DESKeySpec转换成Secret Key对象

SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(algorithm);

SecretKey keySpec = keyFactory.generateSecret(dks);

//Cipher对象实际完成加密操作

Cipher cipher = Cipher.getInstance(algorithm);

//用密钥初始化Cipher对象

cipher.init(Cipher.DECRYPT_MODE, keySpec, sr);

//执行加密操作

byte[] cryptotext= cipher.doFinal(s);
return cryptotext;

catch (InvalidKeyException e)


throw new Exception("密钥非法");

catch (NoSuchAlgorithmException e)

throw new Exception("没有这种加密算法");

catch (BadPaddingException e)

throw new Exception("加密失败");



上面是加密方法,各位大侠帮忙分析下,谢谢。
byte[] cryptotext=sample.encryptData(sample.readFile("c:\\andy.txt"), sample.generateKey());
String sl=new String(cryptotext);
System.out.println(sl);
上面调用之后输出的是乱码,不知道我这样做是不是正确的。
C纥谂座�烹�L?#s刊裢�峦?载??
这就是上面输出的乱码,你觉得这个能被解密成明文吗。。。

参考技术A 密文乱码很正常吧,关键看能不能解密回明文

为什么不能解密,des得到的密文基本都是无意义的二进制文件,用txt打开显然不可能正常显示什么有意义的内容

以上是关于下载的文件名变成乱码怎么成,filename 输出正常不乱码,再往下字符数组出问题了怎么改?的主要内容,如果未能解决你的问题,请参考以下文章

excel内容成乱码,怎么恢复

为啥用JCE加密明文之后输出的密文变成乱码?

我的电脑下载的一些文件,文件名会变成乱码.怎么办?

为啥我从网上下载的东西,解压后里面的文档都成乱码了?

010a3 文件下载中文乱码

为啥下载的文件经常出现以下情况,有啥解决办法么?怎么才能变成(下载)自己想要的文件?