易截截图软件、单文件、免安装、纯绿色、仅160KB

如何解决Java WEB应用中的乱码问题


本作品采用知识共享署名-非商业性使用-相同方式共享 2.5 中国大陆许可协议进行许可。
当我们通过Java程序员的视角来浏览网页时会发现:一方面用户端浏览器(IE或Firefox)以表单或链接的方式提交HTTP请求同时又处理HTTP服务器发出的响应数据,将其中的数据流(HTML数据或其它种类的数据)以适当的方式展示给使用者浏览。另一方面在Java WEB应用服务器上,一个HTTP请求可以由一个Servlet类或一个JSP网页来处理,请求数据来自于HttpServletRequest,响应数据发送至HttpServletResponse。通过用户端提交请求、服务器端处理请求、服务器端返回响应数据以及用户端处理响应数据四个步骤组成了一次HTTP请求的全部过程。数据在这四个重要环节中进行传输时,都将以指定的编码方式进行编码或解码。如果处理不当就会出现乱码问题。
用户端的处理
当用户端发出一个HTTP请求时,一个如下格式的数据将发送给服务器端:
<request-line>
<headers>
<CRLF>
[<request-body><CRLF>]
关于HTTP请求的格式,可以在HTTP协议与HTML表单(再谈GET与POST的区别)中了解更多的内容。
在此,request-line与request-body均需要进行相应的编码处理。
request-line的编码处理
request-line中的URL部分必须以application/x-www-form-urlencoded方式编码。编码时使用的字符集是当前网页在浏览器上显示时所使用的字符集。
JDK中专门有两个类处理application/x-www-form-urlencoded类型的数据,它们是URLEncoder及URLDecoder。当网页上的数据需要手动进行URLEncoding处理时,可使用URLEncoder类完成编码工作。需要手动进行URLEncoding处理的位置包括:
链接(<a></a>)中的href标签属性;
以POST方式提交的表单(<form></form>)中的action标签属性。
例如,网页上不应该产生这样的链接:
<!-- 不正确的写法 -->
<a href="/hello/checkUser.html?opt=中文>使用者身份验证"</a>
正确的写法是:
<!-- 使用UTF-8字符集进行URLEncoding的结果 -->
<a href="/hello/checkUser.html?opt=%E4%B8%AD%E6%96%87">使用者身份验证</a>
为此,方案之一可以在JSP网页上使用脚本化语言进行URLEncoding处理。如:
<%@page import="java.net.URLEncoder"%>
<a href="/hello/checkUser.html?opt=<%=URLEncoder.encode("中文", "UTF-8")%>">使用者身份验证</a


相关文档:

Java服务端接受get方式传送的汉字转码方法

1.用new String(request.getParameter("name").getBytes("ISO-8859-1"),"GBK") 方式进行转码
2.设置tomcat:在tomcat的conf目录下找到server.xml文件,在Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000" ......

JAVA排序算法测试类

import java.util.Random;
 
/**
 * 排序测试类
 *
 * 排序算法的分类如下:
 * 1.插入排序(直接插入排序、折半插入排序、希尔排序);
 * 2.交换排序(冒泡泡排序、快速排序);
 * 3.选择排序(直接选择排序、堆排序);
 * 4.归并排序;
 * 5.基数排序。
&nbs ......

Java Corba实例 (原作者:紫溪)

这篇文章和SUN公司提供的教程类似,中间多了一个HelloImpl的java文件,编译时的命令也就有所不同了
原来的命令为:Server  javac HelloServer.java HelloApp/*.java
                        ......

Java调用 xx.so库

package com.xxx.yyy;
public class kkkEncode
{
    public native static boolean encode(double loIn, double laIn, double[] point);    //声明一个同库一样的方法   
    public native static boolean decode(double loIn, double laIn, double[] p ......

年底收藏系列 Java Web工具CookieSupport

/*
* CookieSupport.java
* Copyright (C) 2007-3-19 <JustinLei@gmail.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号