下载的文件名变成乱码怎么成,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;
为啥用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刊裢�峦?载??
这就是上面输出的乱码,你觉得这个能被解密成明文吗。。。
为什么不能解密,des得到的密文基本都是无意义的二进制文件,用txt打开显然不可能正常显示什么有意义的内容
以上是关于下载的文件名变成乱码怎么成,filename 输出正常不乱码,再往下字符数组出问题了怎么改?的主要内容,如果未能解决你的问题,请参考以下文章