Java页面到后台中文乱码处理、下载文件浏览器文件名中文乱码问题

博客主要围绕Java中的中文乱码问题展开。一是Java页面到后台中文乱码处理,给出了js代码和Java后台处理方法代码;二是下载文件时浏览器文件名中文乱码问题,结合struts2项目,给出了action配置文件和后台Action类代码。

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

Java页面到后台中文乱码处理

js代码:

//js中文转码,通过url传递参数,将含中文的数据进行转码
//获取待转码的内容
var username = $.trim($("#username").val());
//定义转码后的内容
var encodeUsername  = "";
if (username){
    //通过两次 encodeURI() 方法进行转码
	encodeUsername  = encodeURI(encodeURI(username));
}

//访问后台方法并将转码后的参数传入到后台(参数名为username)
//例子:
window.location.href = "http://localhost:8080/demo/login?username=" + encodeUsername ;

Java后台处理方法中代码:

//获取页面参数username
String username = getRequest().getParameter("username");
//判断内容是否为空,使用URLDecoder.decode(username , "UTF-8");进行解码
if (!StringUtils.isEmpty(username)){
	username = URLDecoder.decode(username , "UTF-8");
}

下载文件浏览器文件名中文乱码问题

项目中使用struts2 , 下面给出代码:

action配置文件:

<!-- 下载文件 -->
<action name="downloadFile" class="com.action.FileAction" >
	 <result type="stream">
		<param name="contentType">application/octet-stream</param>
		<!-- inputName要与action中方法对应去掉 get  -->
		<param name="inputName">cadFile</param>
		<param name="bufferSize">10000</param>
		<!-- 此处必须有,fileName显示要下载的附件的名字(中文名称浏览器会乱码,后台需要转码)  -->
		<param name="contentDisposition">attachment;fileName=${downloadFileName}</param>
	 </result>
</action>

后台Action类:

//下载文件名(可能是中文名)
private String downloadFileName;
get 与 set 方法


//下载CAD文件 
@Transactional(readOnly=true)
 public InputStream getCadFile() throws FileNotFoundException{
	  
	  //如果直接返回中文名,下载名称变为 ————————CAD.dwg
	  String filename = "某市某区重点单位CAD.dwg";		
	  //将中文文件名进行编码,浏览器下载文件后,才能正确显示中文名称
	  this.setDownloadFileName(new String(filename.getBytes(), "ISO8859-1"));	
	  return ServletActionContext.getServletContext().
		getResourceAsStream(BaseAction.UPLOAD_CAD_DIR.concat(filename)); 
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值