• jsp/post中文乱码问题


    在 iso-8859-1,gb2312, utf-8 以及任意一种编码格式下,英文编码格式都是一样的,每个字符占8位,而中文就麻烦了,在gb2312 下一个中文占 16位,两字节,而在utf-8 下一个中文要占24位,三字节。浏览器在不知道确定编码方式的情况下,就会把这些字符从中间截断,再显示的时候就乱掉了。所以,想要解决乱码问题,就是要告诉浏览器我们到底使用了什么样的编码方式。

    为了获得正常显示的中文,需要注意以下几步:

    1. 因为服务器要先从本地读取jsp文件,然后经过处理后写入响应,所以我们首先要知道的就是 jsp文件的编码格式。从问题的源头着手解决。

    在咱们用的windowxp 下,文件默认的编码格式是gb2312。

    2. 我们要在http 的响应(response)中添加编码信息,使用如下方式:

    <%@ page contentType="text/html; charset=gb2312"%>

    这段要放在 jsp页面的第一行,用来指定响应的类型和编码格式,contentType 为text/html就是html 内容,charset表示编码为 gb2312。这样浏览器就可以从响应中获得编码格式了。

    这种<%@ %>的形式叫做jsp指令(directive),现在接触到的是page指令,还有 include和 taglib指令,我们会在后面陆续讲到。

    3. 还需要在html 中指定编码格式。

    <head> 
    <meta http-equiv="Content-Type" content="text/html; 
    charset=gb2312" /> 
    <title>title</title> 
    </head>

    meta 部分用来指定当前html 的编码格式,注意这一段要放在head 标签中,并且放到head 标签的最前面,如果不是最前面 ie下可能会出现问题,尤其是在 title 中有中文的情况下。

    完成了以上三段检验,我们才能保证输出的 jsp页面会正常显示中文。

    <%@ page contentType="text/html;charset=gb2312"%>
    <html>
    <head> 
             <meta http-equiv="Content-Type" content="text/html;charset=gb2312" /> 
               <title>title</title> 
           </head> 
    <body>
    
    <form action="test.jsp" method="post">
    <label>用户名</label><label><input tyie="text" name="username"></label>
    <br />
    <input type="submit" value="提交">
    </form>
    
    
    </body>
    </html>

    POST处理页面:

    <%@ page contentType="text/html; charset=gb2312"%>
    <%
    request.setCharacterEncoding("gb2312"); %>
    <%
    out.print(request.getParameter("username"));
    %>
  • 相关阅读:
    输入一个nxn矩阵各元素的值,球出两条对角线元素之和
    打印杨辉三角
    编写一个函数,实现两个字符串的连接功能
    字符串置换。将字符串s中的出现的字符s1用字符s2置换
    有一行文字,要求删去其中某个字符
    自定义函数delstr()的功能是删去字符串s1中所有的"*"
    用微软的kestrel在Linux上利用Apache架设Asp.Net Core环境
    2012年8月14日 星期二 equals()方法 (冲突备份)
    jquery 操作DOM 案例
    FileUpload 控件上传图片和文件
  • 原文地址:https://www.cnblogs.com/achengmu/p/3149504.html
Copyright © 2020-2023  润新知