操作记录

2016-12-21  本文已影响0人  橙子潘潘

2016/12/20

$ gedit ~/.bashrc```
添加命令:

export CATALINA=/usr/local/tomcat
export CLASSPATH $CATALINA/common/lib/servlet-api.jar:$CLASSPATH```
至行尾。
以上内容无效。


GBK,UTF-8,和ISO8859-1之间的编码与解码

值得注意的是在执行setCharacterEncoding()之前,不能执行任何getParameter()。java doc上说明:This method must be called prior to reading request parameters or reading input using getReader()。而且,**该指定只对POST方法有效,对GET方法无效。

分析原因,POST方法在执行第一个getParameter()的时候,java将会按照编码分析所有的提交内容,而后续的getParameter()不再进行分析,所以setCharacterEncoding()无效。而对于GET方法**提交表单是,提交的内容在URL中,一开始就已经按照编码分析所有的提交内容,setCharacterEncoding()自然就无效。

注意:

iso-8859-1是JAVA网络传输使用的标准字符集,而gb2312是标准中文字符集,当你作出提交表单等需要网络传输的操作的时候,就需要把 iso-8859-1转换为gb2312字符集显示,否则如果按浏览器的gb2312格式来解释iso-8859-1字符集的话,由于2者不兼容,所以会是乱码.

规律:

utf-8编码可以用gbk和iso8859-1解码后编回去;
gbk编码后只能用iso8859-1解码后编回去.

在JSP页面获取表单的值时会出现乱码,有两种解决方法:

  1. 在调用getParameter之前通过request.setCharacterEncoding设置字符编码
  2. 调用new String(str.getBytes("iso8859-1"), "UTF-8");编码后解码

Servlet表单数据

  1. 使用GET方法提交表单时:
    HelloForm.java中修改内容
        //处理中文,编码格式转换,教程内容
        //String name = new String(request.getParameter("name").getBytes("UTF-8"),"UTF-8");
        String docType = "<!DOCTYPE html> \n";
        out.println(docType +
                "<html>\n" +
                "<head><title>" + "</title></head>\n" +
                "<body bgcolor=\"#f0f0f0\">\n" +
                "<h1 align=\"center\">" + title + "</h1>\n" +
                "<ul>\n" +
                "  <li><b>站点名</b>:"
                + request.getParameter("name") + "\n" +//教程中:request.getParameter("name")=name
                "  <li><b>网址</b>:"
                + request.getParameter("url") + "\n" +
                "</ul>\n" +
                "</body></html>");```
2. **使用POST提交表单时**
```java
        //处理中文,编码格式转换,教程内容
        String name = new String(request.getParameter("name").getBytes("ISO8859-1"),"UTF-8");
        String docType = "<!DOCTYPE html> \n";
        out.println(docType +
                "<html>\n" +
                "<head><title>" + "</title></head>\n" +
                "<body bgcolor=\"#f0f0f0\">\n" +
                "<h1 align=\"center\">" + title + "</h1>\n" +
                "<ul>\n" +
                "  <li><b>站点名</b>:"
                + name + "\n" +//教程中:request.getParameter("name")=name
                "  <li><b>网址</b>:"
                + request.getParameter("url") + "\n" +
                "</ul>\n" +
                "</body></html>");```
上一篇 下一篇

猜你喜欢

热点阅读