请教 :java 还原编码utf-8 转 gbk问题(实现多编码格式请求处理的web应用)

问题描述

请先看下列代码:Strings="中国";try{Strings_gbk=URLEncoder.encode(s,"gbk");Strings_3=URLDecoder.decode(s_gbk,"ISO-8859-1");System.out.println(s_3);System.out.println(newString(s_3.getBytes("ISO-8859-1"),"gbk"));Strings_4=URLDecoder.decode(s_gbk,"utf-8");System.out.println(newString(s_4.getBytes("utf-8"),"gbk"));}catch(UnsupportedEncodingExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}ISO-8859-1是可以进行还原的,但是utf-8不行,其中道理看了很多文档,但是现在时间的问题,没办法深究了,请教下牛人,我如何还原!产生的原因:因为我的web是一个支持多种编码格式的,包括了utf-8和gbk,但是我的web的过滤器是utf-8的,但是客户端用的是gbk的编码,所以post提交服务器后所有的中文字段是利用了gbk进行了编码:如:Strings_gbk=URLEncoder.encode(s,"gbk");但是在客户端的过滤器中request.setCharacterEncoding(encoding);(encoding=utf-8)response.setCharacterEncoding(encoding);所以服务器对提交的中文进行了utf-8的解码,就产生了Strings_4=URLDecoder.decode(s_gbk,"utf-8");(1)问:如何可以对utf-8解码过的数据进行还原!newString(s_4.getBytes("utf-8"),"gbk")证明是不可行的!(2)问:其实对于post提交,在过滤器中request.setCharacterEncoding设置服务端的解码格式,但是request.getCharacterEncoding()返回了是null。这个问题在网上找到了答案是:IE不写编码格式在http头部!大家参考:http://wanghuan8086.javaeye.com/blog/173869其实为了区分各种编码格式,我要求客服端都传递他们的编码格式是什么:如每次请求必须有参数:inputCharset="utf-8".如果我先在过滤器中使用request.getParameter("inputCharset");那request.setCharacterEncoding就不起作用了,tomcat中就使用服务器默认的编码进行解码(ISO-8859-1)。大侠们,我改何去何从呢?如何对各种编码格式的请求进行转换?对于get方式,处理比较的简单!而post方式呢,还在研究中,希望大家能给点帮忙,小弟在线等。。。。。。。。。。。。。。。。。

解决方案

解决方案二:
自己先顶下~~~~~~~期待大侠们来解决!
解决方案三:
哈哈,看来没有人来关注啊!
解决方案四:
哎呀呀呀!只好土点,如果没人看的话,只好不用utf-8的过滤器,中心定义个新的!

时间: 2024-10-31 14:27:22

请教 :java 还原编码utf-8 转 gbk问题(实现多编码格式请求处理的web应用)的相关文章

我的Java开发学习之旅------>Java字符编码解析

Java开发中,常常会遇到乱码的问题,一旦遇到这种问题,常常就很扯蛋,每个人都不愿意承认是自己的代码有问题.其实编码问题并没有那么神秘,那么不可捉摸,搞清Java的编码本质过程就真相大白了.               其实,编码问题存在两个方面:JVM之内和JVM之外.   1.Java文件编译后形成class 这里Java文件的编码可能有多种多样,但Java编译器会自动将这些编码按照Java文件的编码格式正确读取后产生class文件,这里的class文件编码是Unicode编码(具体说是UT

Java字符编码转换过程说明

Java字符编码转换过程说明 />/> 常见问题 JVM JVM启动后,JVM会设置一些系统属性以表明JVM的缺省区域. user.language,user.region,file.encoding等. 可以使用System.getProperties()详细查看所有的系统属性. 如在英文操作系统(如UNIX)下,可以使用如下属性定义强制指定JVM为中文环境 -Dclient.encoding.override=GBK -Dfile.encoding=GBK -Duser.language=

java字符编码转换

在开发的过程中,字符编码常常令我们头痛.经常会出现各种各样的乱码.下面就介绍java的编码转换和常见的乱码是使用什么样的编码去读取的: 先看一张图片: 在看看java中如何处理编码的转换: package com.test; /** * 字符串编码转换 * @author Herman.xiong * @date 2015年7月16日09:36:59 * @version V3.0 * @since Tomcat6.0,Jdk1.6 * @copyright Copyright (c) 2015

二进制-新手请教java文件操作的一个小问题~十分感谢

问题描述 新手请教java文件操作的一个小问题~十分感谢 这个类的功能是将任意一个二进制文件中的0压缩成0的数目+0的形式 即:将二进制文件中16进制显示的00压缩成 "0的数目+00的形式" 如00 00 00 1A 压缩成03 00 1A 待压缩文件16进制内容: 代码执行后后生成的文件却成了如图所示的情况 求教什么地方出错了,万分感谢. import java.io.*; public class FileCompression { public static void main

java中编码问题的处理方案_java

首先我使用的开发环境是Eclipse.创建一个Java Project默认的编码则为GBK,如图: 下面便是具体代码: import java.io.UnsupportedEncodingException; public class Demo1 { public static void main(String[] args) throws UnsupportedEncodingException { String s = "我爱ABC"; byte[] bytes1 = s.getB

java get 编码/解码的处理方法

java get 编码/解码的处理方法 GET方式访问URL时参数的编解码工作:编码/传输/解码 基本过程: public static void main(String args[]){     String tsptString="中文";     //1.编码(浏览器会按网页的编码方式进行编码)     String tempString=URLEncoder.encode(tsptString,"GBK");     //2.传输     System.ou

Java 程序编码规范

编码|程序|规范 Java 程序编码规范 李小敏www.yway.com 软件工程师2000年12月内容: 命名惯例 Java文件样式 代码编写格式 程序编写 编程技巧 Swing 调试 性能 可移植性 参考资料 作者简介    所有的程序开发手册都包含了各种规则.一些习惯自由程序人员可能对这些规则很不适应,但是在多个开发人员共同写作的情况下,这些规则是必需的.这不仅仅是为了开发效率来考虑,而且也是为了后期维护考虑.命名规范 定义这个规范的目的是让项目中所有的文档都看起来像一个人写的,增加可读性

Java程序编码规范!不仅仅是规范,还有为什么这样做的理由,不错哦!

编码|程序|规范 Java程序编码规范 所有的程序开发手册都包含了各种规则.一些习惯自由程序人员可能对这些规则很不适应,但是在多个开发人员共同写作的情况下,这些规则是必需的.这不仅仅是为了开发效率来考虑,而且也是为了后期维护考虑. 命名规范定义这个规范的目的是让项目中所有的文档都看起来像一个人写的,增加可读性,减少项目组中因为换人而带来的损失.(这些规范并不是一定要绝对遵守,但是一定要让程序有良好的可读性) Package 的命名Package 的名字应该都是由一个小写单词组成. Class 的

java base64编码的三种方式

Java 中如何使用base64编码呢? 有如下三种方式: 方式一:commons-codec.jar Java代码   String base64String = "whuang123";           byte[] result = Base64.encodeBase64(base64String.getBytes());     方式二:使用sun.misc.BASE64Encoder Java代码   /**       * 编码       *        * @pa