美文网首页
中文乱码问题

中文乱码问题

作者: itachi | 来源:发表于2016-12-16 16:36 被阅读60次

    表单中文为什么会出现乱码

    浏览器会对表单的中文参数进行编码,具体采用何种编码方式要看改表单所在的页面指定的编码方式,服务器端默认的解码方式:ios-8859-1不支持中文
    乱码的根源:编码和解码方式不一样

    解决方案

    1、在html文件中添加消息头设置,只适用于post方法
    具体为:<meta charset="UTF-8"/>
    作用:模拟消息头,保证表单中的中文参数按照UTF-8的方式编码。告诉浏览器读到的是一个html文本,编码格式是utf-8前提是只对post可行
    注意:get请求提交时,中文乱码解决:
    修改 tomcat/conf/server.xml文件
    在 <Connection>内添加属性:
    URIEncoding=“UTF-8”
    此方式不建议使用,因为要更改服务器

    2、在服务器端:
    对于post请求
    使用Servlet读取表单的请求参数时,使用
    resquest.setCharacterEncoding(“UTF-8”)
    让服务器使用UTF-8的解码方式解析表单中的数据

    对于get请求的数据,我们在相同的位置可以做如下处理

    先获取请求参数
    String userNmae=resuqest.getParameter(“userName”);
    获得参数后,将其改为UTF-8
    userName=new String(userName.getBytes(“ios8859-1”),'''UTF -8');

    如何中文输出
    response.setContentType("text/html;charset=utf-8");
    必须在PrintWriter out = response.getWriter()之前调用才有效
    作用1:指定out.println()使用utf-8格式编码输出
    作用2:会生成一个消息头:
    content-type:text/html;charset=utf-8
    告诉浏览器返回的数据类型是html,编码是utf-8

    建议:浏览器请求服务器时,尽量避免使用get方式提交中文参数

    相关文章

      网友评论

          本文标题:中文乱码问题

          本文链接:https://www.haomeiwen.com/subject/cxpnmttx.html