struts2 jsp 编码转换, 请大家帮忙看下我的理解哪里出错了。

问题描述

===index.jsp===<%@pagelanguage="java"pageEncoding="gbk"contentType="text/html;charset=gbk"%><html><body>      <formmethod="post"action="codeTest.action">            输入中文:<inputtype="text"name="str"><br>            <inputtype="submit"value="submit">            </form>      </body></html>

===CodeTestAction.java===packageaction;importorg.apache.struts2.ServletActionContext;importcom.opensymphony.xwork2.ActionSupport;publicclassCodeTestActionextendsActionSupport{      privateStringstr;      publicStringgetStr()      {          returnstr;      }      publicvoidsetStr(Stringstr)      {          this.str=str;      }            publicStringexecute()throwsException      {                System.out.println(str);  System.out.println(ServletActionContext.getRequest().getCharacterEncoding());          System.out.println(newString(str.getBytes("utf-8"),"gbk"));                    returnSUCCESS;      }}

===struts.xml===<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPEstrutsPUBLIC      "-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.0//EN"      "http://struts.apache.org/dtds/struts-2.0.dtd"><struts>      <constantname="struts.i18n.encoding"value="utf-8"/>                <packagename="struts2"extends="struts-default">          <actionname="codeTest"class="action.CodeTestAction">                <result>/index.jsp</result>          </action>      </package>      </struts>

启动服务器,访问index.jsp。填上中文提交。控制台输出????UTF-8锟斤拷锟斤拷我的理解:index.jsp用的gbk,用户提交的str是gbk的编码。struts.i18n.encoding是utf-8,所以在CodeTestAction中得到的str是用utf-8解释的乱码。所以用str.getBytes("utf-8")得到用户原本提交的字节码,然后恢复成gbkSystem.out.println(newString(str.getBytes("utf-8"),"gbk"));可为什么打印出的还是乱码呢?我哪里理解错了?少了什么环节么?(我知道,统一编码就能解决。可是我想透彻的理解这个地方。请大家帮忙看看)

时间: 2024-11-03 11:00:31

struts2 jsp 编码转换, 请大家帮忙看下我的理解哪里出错了。的相关文章

php 排序 选择排序法-请各位帮忙看下这个选择排序法哪里错了?

问题描述 请各位帮忙看下这个选择排序法哪里错了? //选择排序法 function selectsort(&$arr){ $temp=0; for($i=0;$i<count($arr)-1;$i++){ // 假设$arr($i)为最小值 $minval=$arr[$i]; //记录最小数的下标 $minindex=$i; for($j=$i+1;$j<count($arr);$j++){ //如果minval不是最小,把最小值传给minval:最小值下标传给minindex: if

struts2 的一个警告 ,请大家帮忙看下

问题描述 WARN http-8080-3 com.opensymphony.xwork2.ognl.OgnlValueStack - Error setting expression 'priceImport[]' with value '[Ljava.lang.String;@18f419e' ognl.ExpressionSyntaxException: Malformed OGNL expression: priceImport[] [ognl.ParseException: Encou

jvm-tomcat自动挂掉,在tomcat/bin/hs_err_pid4884.log如下,请高手帮忙看下。

问题描述 tomcat自动挂掉,在tomcat/bin/hs_err_pid4884.log如下,请高手帮忙看下. # A fatal error has been detected by the Java Runtime Environment: # EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x7c95a1db, pid=5424, tid=2752 # JRE version: 6.0_45-b06 Java VM: Java HotSpo

new-新手求教 请大家帮忙看下源码

问题描述 新手求教 请大家帮忙看下源码 ------------------------DAL------------------------------------------------------------public List select(int UserID) { //初始化数据库连接对象 DateAccessLaye dbmyfile = new DateAccessLaye(); //初始化myfilemodel对象的集合实例 DataTable dsmf = dbmyfile

android开发-recylerview添加head的问题,请各位帮忙看下咋解决

问题描述 recylerview添加head的问题,请各位帮忙看下咋解决 recylerview是纵向的,我在head中添加了一个横向滚动的recyclerview 当手指按在横向recyclerview下拉的时候纵向的recyclerview会向下跳动一段距离(不是正常滑动距离),怎么解决啊?开发-recylerview添加head的问题,请各位帮忙看下咋解决-recylerview"> 解决方案 VC++问题 帮忙解决哈C#程序集问题,请高手帮忙解决一下!!关于xslt的问题,请大家帮

c++/cli-C++ 加载 CTP DLL 报 LNK2001 错误,请大家帮忙看下,这个问题已经困扰几天了

问题描述 C++ 加载 CTP DLL 报 LNK2001 错误,请大家帮忙看下,这个问题已经困扰几天了 有个问题困扰我几天了,群里的大牛帮忙看下. 我加载ctp的dll时,会报下面这个错误. 谁知道原因,或者之前遇到过吗? 解决方案 删除所有的obj,重新编译下,检查下你的lib目录,对应的lib是否齐全.如果程序是自己写的,那么检查下函数的定义和调用是否一致. 解决方案二: 你需要工程中添加ctp的lib库文件.这样link才找得到.

android应用-recylerview添加head的问题,请各位帮忙看下咋解决

问题描述 recylerview添加head的问题,请各位帮忙看下咋解决 recylerview是纵向的,我在head中添加了一个横向滚动的recyclerview 当手指按在横向recyclerview下拉的时候纵向的recyclerview会向下跳动一段距离(不是正常滑动距离),怎么解决啊? 解决方案 已解决,是headerView的问题 解决方案二: VC++问题 帮忙解决哈C#程序集问题,请高手帮忙解决一下!!关于xslt的问题,请大家帮忙看下,急啊! 解决方案三: http://bbs

mysql创建触发器报错,请高手帮忙看下

问题描述 mysql创建触发器报错,请高手帮忙看下 DROP TABLE if EXISTS tb; CREATE TABLE tb(BH CHAR(16),content VARCHAR(20),date DATETIME,val INT); CREATE TRIGGER tri_NewBH BEFORE INSERT ON tb FOR EACH ROW BEGIN DECLARE dt CHAR(8) DECLARE bh_id CHAR(16) DECLARE number INT(1)

C++的dll函数在c#中调用获取不到值,请大家帮忙看下,谢谢!

问题描述 下面的方法是c++写的DLL封装的方法,我要在c#里面引用然后使用:intSTDCALLSDT_ReadBaseMsg(intiPortID,unsignedchar*pucCHMsg,unsignedint*puiCHMsgLen,unsignedchar*pucPHMsg,unsignedint*puiPHMsgLen,intiIfOpen); 我在c#里面是这样写的:///<summary>///读取卡的信息///</summary>///<paramname