中文部分变问号 struts+spring

scorpiolishan 2009-11-14 12:15:56
用struts+spring写的项目,web.xml中配置了编码方式urf-8
 <filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>

映射也配了的。
这个时候从jsp页面传参数(汉字,通过超链接传的,eg:programe?a=汉字)到action不成功,全是问号
于是在tomcat中加入URIEncoding='UTF-8',传参成功,但有个别的机器登录这个页面的时候传过去的参数部分变成问号例如上面的就变成了programe?a=汉?
有没有哪位大侠知道这是为什么啊?
...全文
426 34 打赏 收藏 转发到动态 举报
写回复
用AI写文章
34 条回复
切换为时间正序
请发表友善的回复…
发表回复
sangshusen_1988 2009-11-15
  • 打赏
  • 举报
回复
[Quote=引用 29 楼 scorpiolishan 的回复:]
引用 25 楼 sangshusen_1988 的回复:
<c:url value="url路径" var="yoururl">
<c:param name="参数名" value="${作用域中的key}"/>
</c:url>

<a href=" <c:out value="${yoururl}"/>"> </a>

这个是什么意思?没看明白啊。。。。
[/Quote]
对url进行转码操作,默认是转换成UTF-8格式的
reeves101 2009-11-15
  • 打赏
  • 举报
回复
你的Struts是不是2.1.6版的啊?
如果是,建你换2.1.8,或者把org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
改成2.x那个类
org.apache.struts2.dispatcher.filter.FilterDispatcher


试试吧
scorpiolishan 2009-11-15
  • 打赏
  • 举报
回复
现在有个方案就是用urlencoding
可是我在action里用的是list型的,在页面用<s:literator value="那个List的名字">
<a href="url?a=<s:property/>">连接</a>
这样子的话怎么进行编码?
我知道如果要编码的话可以这么做
<%String a=URLEncodint.encode(a,"utf-8")%>
页面那用<a href="url?tag=<%=a%>">连接</a>
可是现在的问题是如何将<s:propert/>的值传给变量a ?
zl3450341 2009-11-14
  • 打赏
  • 举报
回复
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
zl3450341 2009-11-14
  • 打赏
  • 举报
回复
 <filter>
<filter-name>char</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>char</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>


没有配置过滤的路径
scorpiolishan 2009-11-14
  • 打赏
  • 举报
回复
在线等待啊,同志们
scorpiolishan 2009-11-14
  • 打赏
  • 举报
回复
现在在tomcat里配了URIEncoding='UTF-8'后发现部分汉字变问号了
我用debug调试发现传到下一个action中传过去的是“软件工程”的话就变成了“软件工?”


注意:部分问号。。。。。

大侠们啊!!!!
scorpiolishan 2009-11-14
  • 打赏
  • 举报
回复
<a href=2.jsp?filename= <%=java.net.URLEncoder.encode("放中文") %>>点击此处 </a>
我的项目里放中文那里是从上个action里得到的值,用<s:property/>获得,我试了这样放进去后struts标签就无效了
qiheia 2009-11-14
  • 打赏
  • 举报
回复
取的时候也要转下

request.getParameter("filename").getBytes("ISO8859-1");
qiheia 2009-11-14
  • 打赏
  • 举报
回复
<a href=2.jsp?filename=<%=java.net.URLEncoder.encode("放中文") %>>点击此处</a>

用这样的方式转下吧,试试。。。

scorpiolishan 2009-11-14
  • 打赏
  • 举报
回复
比如我是传从action中获得的一个值
现在是这个样子的
<a href="program?a=<s:property />">
例子</a>
要怎么改?
scorpiolishan 2009-11-14
  • 打赏
  • 举报
回复
如何进行转码?
scorpiolishan 2009-11-14
  • 打赏
  • 举报
回复
不能沉啊,加分了,求解啊
qiheia 2009-11-14
  • 打赏
  • 举报
回复
超链接传汉字,最好进行转码在传。。。
george3057 2009-11-14
  • 打赏
  • 举报
回复
你是不是还用的别的filter?
网上说有的filter会对spring的filter产生影响。
建议把spring的filter 放在最前面
george3057 2009-11-14
  • 打赏
  • 举报
回复
建议自己写个 filter

把所有请求 都编码成 UTF-8

是不是 spring的filter 有什么特别的地方 导致你的问题?
zhanghai921 2009-11-14
  • 打赏
  • 举报
回复
[Quote=引用 29 楼 scorpiolishan 的回复:]
引用 25 楼 sangshusen_1988 的回复:
<c:url value="url路径" var="yoururl">
<c:param name="参数名" value="${作用域中的key}"/>
</c:url>

<a href=" <c:out value="${yoururl}"/>"> </a>

这个是什么意思?没看明白啊。。。。
[/Quote]
建议看下jstl的c标签。
zhanghai921 2009-11-14
  • 打赏
  • 举报
回复
在传值的时候,用下urlencoding编下码吧,你从action中取值,可以用el表达式吧。
scorpiolishan 2009-11-14
  • 打赏
  • 举报
回复
奇数个最后一位出现问号,偶数个正常,现在所有的编码方式统一的是utf-8,怎么用最小的代价来改变?
pencil456 2009-11-14
  • 打赏
  • 举报
回复
在web.xml中这样配置试试.不过我用的是struts2.1的


<!-- 编码过滤器 -->
<filter>
<filter-name>springcodefilter</filter-name>
<filter-class>
org.springframework.web.filter.CharacterEncodingFilter
</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>springcodefilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

<filter>
<filter-name>struts-cleanup</filter-name>
<filter-class>
org.apache.struts2.dispatcher.ActionContextCleanUp
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts-cleanup</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
加载更多回复(14)

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧