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));
}