从浏览器获取数据到服务器,服务器将得到数码再展现在浏览器上英文字母正常突显,粤语字符乱码的题材,已经拔取了

json 1

 

response.setContentType(“text/html;charset=utf-8”);

将浏览器编码设置为utf-8,但如故乱码

源码如下:

package com.swift;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.google.gson.Gson;
@WebServlet("/add")
public class ServletAdd extends HttpServlet {
    private static final long serialVersionUID = 1L;
    public ServletAdd() {
        super();
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.getWriter().append("Served at: ").append(request.getContextPath());
        int id=Integer.parseInt(request.getParameter("id"));
        String name=request.getParameter("name");
        int age=Integer.parseInt(request.getParameter("age"));
        Student st=new Student(id,name,age);
        Gson gson=new Gson();
        String json=gson.toJson(st);
        response.setContentType("text/html;charset=utf-8");//这句使用无效,没有解决乱码问题
        response.getWriter().append(json);
        writeToFile(new File("d:/student.json"),json);
    }

    private void writeToFile(File file,String json) {
        PrintWriter pw = null;
        try {
            try {
                pw=new PrintWriter(new OutputStreamWriter(new FileOutputStream(file,true),"utf-8"));
            } catch (UnsupportedEncodingException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            pw.println(json);
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally {
            pw.close();
        }
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }

}

解决进度

透过代码查看当前电脑的编码类型

System.out.println(System.getProperty(“file.encoding”));
System.out.println(Charset.defaultCharset());

地点二种办法哪个都得以。

获悉编码类型为GBK,所以将代码改为response.setContentType(“text/html;charset=GBK”);

但要么乱码,编码核查依然尚未马到成功。

亟待驾驭的注意事项有上面多少个:

(1)、若是服务端设置编码格式为utf-8,使用的口舌 response.setCharacterEncoding(“utf-8”);

    而浏览器端我们查到的编码是GBK,那么早晚会乱码,如下图

json 2

(2)、方法一,那时在意识到浏览器端为GBK的境况,大家只要设置服务器端编码也为GBK,就可以了,使用语句如下:

    response.setCharacterEncoding(“utf-8”);

    但要注意那句代码一定要放在尽可能的面前,否则会和前边一样无效。

(3)、方法二,也得以通通都改成utf-8(就是浏览器端和劳务器端同时设置成utf-8),代码如下:

protected void doGet(HttpServletRequest request, HttpServletResponse
response) throws ServletException, IOException {
response.setCharacterEncoding(“utf-8”);//第一句,设置服务器端编码
response.setContentType(“text/html;charset=utf-8”);//第二句,设置浏览器端解码
response.getWriter().append(“Served at:
“).append(request.getContextPath());//那句没用
int id=Integer.parseInt(request.getParameter(“id”));
String name=request.getParameter(“name”);
int age=Integer.parseInt(request.getParameter(“age”));
Student st=new Student(id,name,age);
Gson gson=new Gson();
String json=gson.toJson(st);
response.getWriter().append(json);
writeToFile(new File(“d:/student.json”),json);
}

json 3

得逞解决

 

 

 

 

 

相关文章

网站地图xml地图