本帖最后由 小石姐姐 于 2018-7-10 08:41 编辑
中文乱码的解决方案 大家都知道,Java语言是高斯林爸爸发明的,那既然是外国友人发明的,肯定不支持中文啊,所以中文乱码这个问题就很常见了,那如何解决这个问题呢?那肯定是要设置字符集了,把字符集设置成支持中文的不就可以了嘛!不过大家都知道,浏览器访问服务器,服务器给浏览器返回数据,这是一次请求响应,那我们今天就分两部分来学习。
响应部分(response)主要分为两种 1. 响应数据为中文时
[AppleScript] 纯文本查看 复制代码 Response.setContentType(“text/html;charset=UTF-8”);
Response.getWriter().print(“中文”); 2. 文件下载文件名为中文时(这个就跟浏览器有关系了),这里给大家普及一个知识点--火狐浏览器是用base64的方式进行编解码的,其他的浏览器呢,就直接用encode/decode方法编解码就可以了
[AppleScript] 纯文本查看 复制代码 //这里先得到浏览器的类型
String agent =request.getHeader("User-Agent");
//判断下浏览器类型,然后进行不同的操作就可以了
if(agent.contains("Firefox")){
filename= base64EncodeFileName(filename);
}else{
filename= URLEncoder.encode(filename,"UTF-8");
}
Public staticString base64EncodeFileName(String filename){
BASE64Encoder base64Encoder = new BASE64Encoder();
try{
return “=?UTF-8?B?”
+ newString(base64Encoder.encoder(
Filename.getBytes(“UTF-8”)
))+”?=”;
}catch(Exception e){
e.printStackTrace();
throw new RuntimeException(e);
}
}
请求部分:request Request的提交方式有两种:get和post Get提交方式(利用String的构造方法) [AppleScript] 纯文本查看 复制代码
new String (request.getParameter(“name”).getBytes(“ISO-8859-1”),”UTF-8”); Post提交方式(直接设置字符集) [AppleScript] 纯文本查看 复制代码 Request.setCharacterEncoding(“UTF-8”);
|