操作记录

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 = " \n";
        out.println(docType +
                "\n" +
                "" + "\n" +
                "\n" +
                "

" + title + "

\n" + "
    \n" + "
  • 站点名:" + request.getParameter("name") + "\n" +//教程中:request.getParameter("name")=name "
  • 网址:" + request.getParameter("url") + "\n" + "
\n" + "");``` 2. **使用POST提交表单时** ```java //处理中文,编码格式转换,教程内容 String name = new String(request.getParameter("name").getBytes("ISO8859-1"),"UTF-8"); String docType = " \n"; out.println(docType + "\n" + "" + "\n" + "\n" + "

" + title + "

\n" + "
    \n" + "
  • 站点名:" + name + "\n" +//教程中:request.getParameter("name")=name "
  • 网址:" + request.getParameter("url") + "\n" + "
\n" + "");```

你可能感兴趣的:(操作记录)