java编码解码乱码问题

服务器设值(中文)到界面使用了两次编码:

1 String pageJson=URLEncoder.encode(URLEncoder.encode(str,"GBK"), "GBK");
2 request.setAttribute("pageJson",pageJson);

然后在界面又接收到的值传到后台,用的是地址栏直接url:

window.location.href="...test.do?method=test&pageJson=${pageJson}";

在后台直接解码:

String pageJson=URLDecoder.decode(request.getParameter("pageJson"),"GBK");

此时解码出来的值是乱码的,页面设置的编码格式也是GBK,并且没解码之前直接获取参数的值也是乱码的(其实无需解码了)。

应该是传到服务器的时候浏览器自动解码了。

故加上:

String pageJson=new String(pageJson.getBytes("ISO-8859-1"), "GBK");

就解决了。其实就是页面上虽然是编码后的格式,但是是通过 window.location.href 这样的方式请求到后台的,所以浏览器自动解码,跟平常一般url参数提交到后台是一样的,一般请求默认的编码格式是ISO-8859-1,和页面设置的格式无关,正常格式转换即可。

时间: 2024-10-28 20:19:03

java编码解码乱码问题的相关文章

Java编码与乱码问题

一.为什么要编码? 由于人类的语言太多,因而表示这些语言的符号太多,无法用计算机的一个基本的存储单元----byte来表示,因而必须要经过拆分或一些翻译工作,才能让计算机能理解. byte一个字节即8个bit,所以能表示的字符范围是0~255个,这满足不了人类的需要,要解决这个矛盾必须需要一个新的数据结构char,从char到byte必须经过编码. 二.常用编码介绍 ASCII码 总共128个,用一个字节的低7位表示,0~31是控制字符,如换行.回车.删除等,32~126是打印字符,可以通过键盘

encodeURIComponent编码后java后台解码乱码的解决

解决方法一: JavaScript: window.self.location="searchbytext.action?searchtext="+encodeURIComponent(encodeURIComponent(seartext)); java: searchtext=java.net.URLDecoder.decode(searchtext,"UTF-8"); 为什么要两次编码的原因: 后台java代码直接request.getParameter(&q

签名、BOM头、编码、Windows记事本编码、java编码解码的那些事

对于Windows记事本: ANSI :GB2312 java中应使用GBK解码 Unicode :有签名的UTF-16LE java中应使用UTF-16解码 Unicode big endian :有签名的UTF-16BE java中应使用UTF-16解码 UTF-8 :有签名的UTF-8 java中只能手动去掉签名了再用UTF-8解码了 对于java程序的解码: GBK :GBK编码可以兼容GB2312,因此用GBK处理GBK.GB2312两种编码 UTF-8 :无签名的UTF-8 UTF-

java中文乱码解决之道(五)—–java是如何编码解码的

原文出处:http://cmsblogs.com/?p=1491 在上篇博客中LZ阐述了java各个渠道转码的过程,阐述了java在运行过程中那些步骤在进行转码,在这些转码过程中如果一处出现问题就很有可能会产生乱码!下面LZ就讲述java在转码过程中是如何来进行编码和解码操作的. 编码&解码 在上篇博客中LZ阐述了三个渠道的编码转换过程,下面LZ将结束java在那些场合需要进行编码和解码操作,并详序中间的过程,进一步掌握java的编码和解码过程.在java中主要有四个场景需要进行编码解码操作:

java中文乱码解决之道(六)—–javaWeb中的编码解码

在上篇博客中LZ介绍了前面两种场景(IO.内存)中的java编码解码操作,其实在这两种场景中我们只需要在编码解码过程中设置正确的编码解码方式一般而言是不会出现乱码的.对于我们从事java开发的人而言,其实最容易也是产生乱码最多的地方就是web部分.首先我们来看在javaWeb中有哪些地方存在编码转换操作. 编码&解码 通过下图我们可以了解在javaWeb中有哪些地方有转码: 用户想服务器发送一个HTTP请求,需要编码的地方有url.cookie.parameter,经过编码后服务器接受HTTP请

java中文乱码解决之道(六)-----javaWeb中的编码解码

在上篇博客中LZ介绍了前面两种场景(IO.内存)中的java编码解码操作,其实在这两种场景中我们只需要在编码解码过程中设置正确的编码解码方式一般而言是不会出现乱码的.对于我们从事java开发的人而言,其实最容易也是产生乱码最多的地方就是web部分.首先我们来看在javaWeb中有哪些地方存在编码转换操作. 编码&解码 通过下图我们可以了解在javaWeb中有哪些地方有转码: 用户想服务器发送一个HTTP请求,需要编码的地方有url.cookie.parameter,经过编码后服务器接受HTTP请

java中文乱码解决之道(五)-----java是如何编码解码的

在上篇博客中LZ阐述了java各个渠道转码的过程,阐述了java在运行过程中那些步骤在进行转码,在这些转码过程中如果一处出现问题就很有可能会产生乱码!下面LZ就讲述java在转码过程中是如何来进行编码和解码操作的. 编码&解码 在上篇博客中LZ阐述了三个渠道的编码转换过程,下面LZ将结束java在那些场合需要进行编码和解码操作,并详序中间的过程,进一步掌握java的编码和解码过程.在java中主要有四个场景需要进行编码解码操作: 1:I/O操作 2:内存 3:数据库 4:javaWeb 下面主要

Java后台URL转码-Js编码和Java后台解码

方法一 String message = java.net.URLEncoder.encode("[西北局信息中心]采油气接口异常", "utf-8"); 前台传的如果是汉字的话,后台就用URLDecoder解码 1.java.将resultMsg 转为utf-8 (1) resultMsg = URLEncoder.encode(resultMsg, "utf-8"); (2) new String(request.getParameter(&

java中文乱码解决之道(四)—–java编码转换过程

原文出处:http://cmsblogs.com/?p=1475 前面三篇博客侧重介绍字符.编码问题,通过这三篇博客各位博友对各种字符编码有了一个初步的了解,要了解java的中文问题这是必须要了解的.但是了解这些仅仅只是一个开始,以下博客将侧重介绍java乱码是如何产生的.存在哪些乱码的情况.该如何从根本上解决乱码问题.各位随博主一起征服令人厌烦的java乱码问题吧!!! java编码转换过程 我们总是用一个java类文件和用户进行最直接的交互(输入.输出),这些交互内容包含的文字可能会包含中文