Java中的中文乱码问题

中文乱码问题

1.在传入的url中含有中文

豹纹头 query String parameter

解决如下:

//jsp中传值方式通过url 会在地址栏显示 
//防止乱码有两种解决方法(get请求)


//1.servlet代码中获取url中的值  

String name  = req.getParameter("name");
//在这里添加一个过滤 转换中文乱码
name = new String(name.getBytes("ISO8859-1"),"UTF-8");

//2.在javascript代码中 也可以直接把要传入的url值进行转码

var urlCode = encodeURIComponent("要传入url中的值")
xmlHttp.open("get","/servlet?params="+urlCode);

2.表单提交(post)中含有中文

豹纹头显示formDate

//转化表单中中文乱码问题
req.setCharacterEncoding("UTF-8");
//doPost 中获取表单中的值
String name = req.getParameter("name");

3.给客户端设置响应编码

防止在网页或者客户端出现乱码现象

//获取表单之前添加响应编码
resp.setParameter("UTF-8");

以上是对于少量数据的按需转码,某些字符的乱码都可以转换解决

全局的格式转码配置

在流行的ssm框架中 在web.xmL中配置字符过滤转码 在整个操作过程中就无需注意转码的问题
配置如下 在web.xml中:


<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">

    
    <filter>
        <filter-name>encodingFilterfilter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilterfilter-class>
        <init-param>
            <param-name>encodingparam-name>
            <param-value>UTF-8param-value>
        init-param>
        <init-param>
            <param-name>forceRequestEncodingparam-name>
            <param-value>trueparam-value>
        init-param>
        <init-param>
            <param-name>forceResponseEncodingparam-name>
            <param-value>trueparam-value>
        init-param>
    filter>
    <filter-mapping>
        <filter-name>encodingFilterfilter-name>
        <url-pattern>/*url-pattern>
    filter-mapping>

web-app>

其中filter-mapping配置的是所有的请求都会经过字符过滤器
init-param为转换格式 forceRequestEnCoding 请求数据转码
forceResponseEncoding 为响应数据转码 其实和上面的转码性质一样只不过这里通过过滤器做成全局的了。

最近在做echarts的测试用例 但是转换后的json数据去发现中文乱码问题
尝试了以上所有依然不能解决,
贴上http响应头:

Java中的中文乱码问题_第1张图片

做测试的时候使用的是ssm框架 这里的解决办法只针对于springMVC框架
方案如下:

    @RequestMapping(value = "/bar",method = RequestMethod.POST,
            produces = {"application/text;charset=UTF-8"})//此配置解决响应数据乱码问题
    @ResponseBody()
    public String init(){
        //业务逻辑
        return '返回的json数据';
    }

解决后响应头如下:
Java中的中文乱码问题_第2张图片

如有不当之处 还请谅解 如能对您有帮助还请推荐 谢谢

你可能感兴趣的:(Java)