我们的内容使用GET方式发送,就会在URL后面带上内容,在游览器发来的请求经过了游览器的URI编码,发送到服务器这边,如果是struts2会经过拦截器进行URI解码,并且使用"iso8859-1"进行编码,因为传输过程是二进制的。

这时候想解决中文编码问题有三种方式

假设:

url:http://localhost:8080/test?name=测试

一、在服务器进行处理

得到的内容是"iso8859-1",使用

String str = new String(name.getByte("iso8859-1"),"utf-8");

得到正确的值。

ps:这种方式有个缺点;这种方式服务器必须默认使用iso8859-1的方式编码,如果我在TOMCAT更改默认的iso8859-1为utf-8,那么这种方式就无法生效了。

二、在TOMCAT配置文件中设置

在TOMCAT的目录下conf/server.xml中,搜索"8080"端口,如果改了端口按端口号搜索,搜到之后在这个标签中空格输入 URIEncoding="UTF-8" ,它默认是iso8859-1。

ps:这种方式缺点显而易见,换了服务器就要更改,有时候忘记也是很常见的事情。

三、手动编码多一次

游览器和服务器传输都是先编码后解码,对中文的支持不太好,那么能不能把中文事先转换成英文或数字传输呢?

假设:

1、name=测试,在JS标签中,使用encodeURI(param)方法先将“测试” 转成 name=%26%92(瞎编的)  游览器再自动进行URI编码 name=%2525%2592(%的URI编码为%25);

ognl表达式中,使用<s:param name="name" value="%{@java.net.URLEncoder.encode(name,'utf-8')}"> 对值进行URI编码,同时在struts2配置文件中开启静态方法的支持 java.net.URLEncoder.encode()。

struts.xml: name="struts.ognl.allowStaticMehtodAccess" value="true"

2、这时候将这链接GET方式提交了

3、服务器那边得到 name=%26%92 ,我们再使用URIDecoder.decode(name,"utf-8"); 进行解码,这样就得到了“测试”

get方式编码问题解决方案 转载的更多相关文章

  1. 在上传文件时候 request.setCharset对文件名有效 对普通文本域无效 需要通过手动转换编码方式编码

    在上传文件时候 request.setCharset对文件名有效 对普通文本域无效 需要通过手动转换编码方式编码

  2. Python 编码错误解决方案

    Python 编码错误解决方案 Python UnicodeDecodeError: 'ascii' codec can't decode byte 0xe5 in position 7: ordin ...

  3. SSO单点登录解决方案[转载]

    1 什么是单点登陆      单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一.SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互 ...

  4. java系统高并发解决方案(转载收藏)

    一个小型的网站,比如个人网站,可以使用最简单的html静态页面就实现了,配合一些图片达到美化效果,所有的页面均存放在一个目录下,这样的网站对系统架构.性能的要求都很简单,随着互联网业务的不断丰富,网站 ...

  5. python字符串编码理解(转载)

    (转载)字符编码和python使用encode,decode转换utf-8, gbk, gb2312 (http://www.cnblogs.com/jxzheng/p/5186490.html) A ...

  6. Java应用中的编码问题(转载)

    第三篇:JAVA字符编码系列三:Java应用中的编码问题这部分采用重用机制,引用一篇文章来完整本部分目标.来源:  Eceel东西在线 问题研究--字符集编码 地址:http://china.ecee ...

  7. 让Jackson JSON生成的数据包含的中文以unicode方式编码

      本文出处:http://blog.csdn.net/chaijunkun/article/details/8257209,转载请注明.由于本人不定期会整理相关博文,会对相应内容作出完善.因此强烈建 ...

  8. url 编码(percentcode 百分号编码)(转载)

    原文地址:http://www.cnblogs.com/leaven/archive/2012/07/12/2588746.html   http://www.imkevinyang.com/2009 ...

  9. Objective-C开发编码规范【转载】

    概要 Objective-C是一门面向对象的动态编程语言,主要用于编写iOS和Mac应用程序.关于Objective-C的编码规范,苹果和谷歌都已经有很好的总结: Apple Coding Guide ...

随机推荐

  1. 【狼】unity 鼠标拖拽物体实现任意角度自旋转

    主要涉及函数 Input.GetAxis(“Mouse x”) 可取得鼠标横向(x轴)移动增量 Input.GetAxis(“Mouse y”) 可取得鼠标竖向(y轴)移动增量 通过勾股定理获取拖拽长 ...

  2. OpenStack学习推荐

      前言: 学习.了解.安装部署OpenStack也写了好一段时间了,现在觉得也有点必要写点总结.搞IT这一块基本就这样,不管是搞什么领域,一个项目超过两个月没动它,就基本不知道当时是怎么搞的,当时学 ...

  3. poj 1011 搜索减枝

    题目链接:http://poj.org/problem?id=1011 #include<cstdio> #include<cstring> #include<algor ...

  4. Zookeeper、Solr和Tomcat安装配置实践

    Zookeeper.Solr和Tomcat安装配置实践

  5. 自定义使用S缓存方法

    <?php $info=S("name","lizhaoyao"); $name=S("name"); var_dump($name) ...

  6. Windows Live Writer的Markdown插件MarkdownInLiveWriter支持语法高亮了

    我前几天开发的Windows Live Writer的Markdown的插件MarkdownInLiveWriter支持语法高亮了.参见下图: 基本上就是把我的另一个插件CodeInLiveWrite ...

  7. memcache基本讲解

    Memcached技术 介绍: memcached是一种缓存技术, 他可以把你的数据放入内存,从而通过内存访问提速,因为内存最快的, memcached技术的主要目的提速, 在memachec 中维护 ...

  8. 1040. Longest Symmetric String (25)

    题目链接:http://www.patest.cn/contests/pat-a-practise/1040 题目: 1040. Longest Symmetric String (25) 时间限制 ...

  9. android 23 启动带2个Categories值的预定义acticity和桌面activity

    mainActivity.java package com.sxt.day04_07_twoaction; import android.os.Bundle; import android.app.A ...

  10. php 总结

    1.安装完apache之后 2.有一个目录 htdocs 下面就是根目录了 3.测试一下,新建一个index.html 写入 it works  .输入localhost 看是否显示 it works ...