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

 String pageJson=URLEncoder.encode(URLEncoder.encode(str,"GBK"), "GBK");
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,和页面设置的格式无关,正常格式转换即可。

如果这样这样还是乱码问题,检查下服务器的配置文件是否也设置了编码格式,去掉即可。

如果是tomcat,检查server.xml配置文件,里面是否有设置编码格式。

<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
useBodyEncodingForURI="true"
URIEncoding="utf-8"/>

这里的URLEncoding 是对get请求生效的,设置get请求的编码格式是utf-8,所以导致乱码,去掉或者改为gbk即可。

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

  1. 常用的js、java编码解码方法

    前言 前后端直接传输数据进行交互不就行了吗,为什么还要进行编码解码?正常情况下直接交互没问题,但当有类似以下情况出现时就需要进行编码再进行传输: 1.编码格式难以统一,导致数据交互过程出现中文乱码等问 ...

  2. Java编码与乱码问题

    一.为什么要编码? 由于人类的语言太多,因而表示这些语言的符号太多,无法用计算机的一个基本的存储单元----byte来表示,因而必须要经过拆分或一些翻译工作,才能让计算机能理解. byte一个字节即8 ...

  3. java编码解码过程

    最近做项目的时候,有时会遇到中文乱码的问题,网上查询了很多资料,发现大多都是只讲解决方案,并没有讲到为什么要使用这种方案,这种方案的原理是什么? 最典型的就是连接数据库的URL,我们一般把它放到cla ...

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

    对于Windows记事本: ANSI :GB2312 java中应使用GBK解码 Unicode :有签名的UTF-16LE java中应使用UTF-16解码 Unicode big endian : ...

  5. JAVA 编码解码

    涉及编码的地方一般都在从字符到字节或是从字节到字符间的转换上 1.在IO中存在的编码,主要是 FileOutputStream 和 FileInputStream,在使用时需要指定字符集,而不是使用系 ...

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

    在上篇博客中LZ阐述了java各个渠道转码的过程,阐述了java在运行过程中那些步骤在进行转码,在这些转码过程中如果一处出现问题就很有可能会产生乱码!下面LZ就讲述java在转码过程中是如何来进行编码 ...

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

    在上篇博客中LZ介绍了前面两种场景(IO.内存)中的java编码解码操作,其实在这两种场景中我们只需要在编码解码过程中设置正确的编码解码方式一般而言是不会出现乱码的.对于我们从事java开发的人而言, ...

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

    在上篇博客中LZ介绍了前面两种场景(IO.内存)中的java编码解码操作,其实在这两种场景中我们只需要在编码解码过程中设置正确的编码解码方式一般而言是不会出现乱码的.对于我们从事java开发的人而言, ...

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

    原文出处:http://cmsblogs.com/?p=1491 在上篇博客中LZ阐述了java各个渠道转码的过程,阐述了java在运行过程中那些步骤在进行转码,在这些转码过程中如果一处出现问题就很有 ...

随机推荐

  1. Android Context 上下文 你必须知道的一切

    本文转载于:http://blog.csdn.net/lmj623565791/article/details/40481055 转载请标明出处:http://blog.csdn.net/lmj623 ...

  2. Lua简介

    Lua是一种扩展语言,脚本语言,还没有主程序的概念,类似于插件,也即不能直接使用,必须嵌入在牛逼的语言里使用,如Python. Lua由C语言编写,可以在宿主语言里写一段c程序,让Lua的解释器使用, ...

  3. 国内最新Unity3D视频教程合辑

    麦子学院最新Unity3D视频教程上线啦,此为现目前国内最全.最新Unity3D教程,分享给广大小伙伴,希望对大家学习Unity3D有帮助: 第一阶段:Unity3D概要及入门 零基础学C#开发 Un ...

  4. ASP.NET MVC获取微信返回的json数据分页

    View @model JiaYe.WeiXin.Models.ViewModels.UserViewModel <div class="pull-left pagination&qu ...

  5. java1234教程系列笔记 S1 Java SE 0101 HelloWorld

    本节分为三讲.java概览,第二节讲了安装jdk 配置环境变量 第三节讲了经典的hello world 1.新建一个txt文本 public class chapter0102{ public sta ...

  6. Registry values for ProductID and LocaleID for AutoCAD and the vertical products

    原文地址:http://adndevblog.typepad.com/autocad/2013/08/registry-values-for-productid-and-localeid-for-au ...

  7. mysql授权登录用户

    创建用户并授权 CREATE USER 'voctrals'@'%' IDENTIFIED BY 'some_password'; 允许远程访问 GRANT ALL PRIVILEGES ON *.* ...

  8. SQL 导出表结构到Excel

    SQL 导出表结构到Excel SELECT 表名 then d.name else '' end, 表说明 then isnull(f.value,'') else '' end, 字段序号 = a ...

  9. [SPI&I2C]I2C和SPI协议介绍

    IIC vs SPI 现今,在低端数字通信应用领域,我们随处可见IIC (Inter-Integrated Circuit) 和 SPI (Serial Peripheral Interface)的身 ...

  10. smarty模板引擎部分内容(思维导图)