A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 小石姐姐 于 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”);

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马