黑马程序员技术交流社区

标题: 【石家庄校区】中文乱码如何解决 [打印本页]

作者: HeyPeace    时间: 2018-7-9 16:22
标题: 【石家庄校区】中文乱码如何解决
本帖最后由 小石姐姐 于 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”);






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2