|
Form表单是网站程序中的重要组成部分,但是Formolu表单经常会出现一些乱码,给网站造成许多麻烦。针对Form表单常见的乱码问题,这里我总结了一些解决方案,希望可以帮到大家。
1、表单提交时的乱码问题
在进行表单提交的时候,经常在提交中文时会出现一些乱码,这也是常见的一种乱码形式。表单的提交方式有两种:get和post提交方式。所以请求的时候便有get请求和post请求。那么这两种请求方式产生的乱码问题,其解决方案是不同的。如我做一个彩票软件开发的一个表单提交,如果用get请求时,其传递给服务器的数据是附加在URL地址之后的;而post的请求时,其传递给服务器的数据是作为请求体的一部分传递给服务器。这也就导致了对它们所产生的乱码的处理方式是不同的。
(1)客户端的get请求
对于客户端的get请求来说,服务器端处理要想不出现乱码,解决这个问题稍微复杂一些,需要用到String类型的构造函数,其中的一个构造函数就是用指定的编码方式去解码,一般都用UTF-8的方式。只要在服务器端将请求得到的参数重新构造成一个字符串就行了。经过构造之后,客户端输入中文,且表单时get请求的情况下,str就变成了中文了。
(2)客户端的post请求
对于客户端的post请求来说,处理乱码的问题就比较简单了,因为请求的数据时作为请求体的一部分传递给服务器的,所以只要修改请求内的编码就行了。只要在服务器端的最开始处将请求的数据设置为UTF-8就行了,输入如下语句:request. setCharacterEncoding(UTF-8);这样用户在服务器端获取到的中文数据就不再是乱码了。
2、超链接时出现乱码
在Web开发中,挺多的时候都是通过超链接去传递中文参数的,这也会导致在显示的时候也会出现乱码,对于超链接来说,它实际上是向服务器端发送了一个请求,而它发出的请求是属于get请求,所以对于超链接的乱码来说,它处理乱码的方式和表单的get请求出现乱码的方式是一样的。
3、浏览器版本低导致的乱码
这个问题也是很常见的,不同的浏览器,不同的版本会出现一些乱码问题。如在一个彩票软件开发 网站提交一些信息,地址栏显示的是%2C%C6%CC%C6的字样,其实这都是防止出现乱码进行的解决方案,如果你的浏览器是IE6或以下版本,则我们的第二种情况和第三种情况会出现乱码(尤其是当中文是奇数的时候),这就不好使了所以我们必须采用另一种比较实际的作法:
在java.net包中提供了URLEncoder类和URLDcoder类,这两个类又分别提供了encode和decode两个静态方法,分别用于进行编码和解码。我们将要传递的中文参数进行编码之后,在传递给服务器,服务器解码之后,就可以显示中文了。
进行编码:URLEncoder.encode(stuname,UTF-8)
传递给服务器:传递
进行解码:URLDecoder.decode(stuname,UTF-8)
Form表单的出现的乱码问题还有很多,这里介绍的只是在我的工作中常见的乱码问题。其实在工作中你会发现,Form表单的乱码问题还非常多,希望有经验的朋友也可以分享些经验。 |
|