但其中左侧页面有特殊用途所以需要设置为UTF-8,action因为过滤器设置编码是GBK(下面有该过滤器此部分设置),此时该页面提交到action时,action中的中文值乱码。请问如何解决?
试过 new String( dataXML.toString().getBytes( "utf-8" ), "gbk");这样貌似转没用
试过把过滤器
<filter-name>Set Character Encoding</filter-name>
<filter-class>com.tvlink.util.SetCharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>GBK</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>Set Character Encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
中的GBK替换成UTF-8,然后action里加上request.setCharacterEncoding("utf-8");可以解决这个问题倒是,但是其他的JSP页面全都是GBK的,这个页面因为有特殊需要所以必须得UTF-8,如果单独设置该过滤器,前面的全局过滤器如何修改?这个单独的过滤器怎么写呢?应该写我action的地址还是我提交表单的jsp的地址···
或者有其他什么办法,多谢
页面提交到action里之前都是没问题的,已经设置 request.seteccoding('UTF-8')来取参了
22 个解决方案
#1
new String( dataXML.toString().getBytes( "gbk" ), "utf-8");
这样才转成utf-8格式吧
这样才转成utf-8格式吧
#2
貌似楼上是正确的...
#3
试试楼上说的方法,看看行不行啊!
#4
尽量使用post提交。设置请求和响应过滤器设置字符编码
#5
urldecode
或者后台
new String( dataXML.toString().getBytes( "gbk" ), "utf-8");
或者jsp页面<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
或者数据库编码设置为utf-8
或者tomcat 中的server.xml添加项目编码
或者后台
new String( dataXML.toString().getBytes( "gbk" ), "utf-8");
或者jsp页面<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
或者数据库编码设置为utf-8
或者tomcat 中的server.xml添加项目编码
#6
new String( dataXML.toString().getBytes( "gbk" ), "utf-8"); 建议还是所有jsp页面和程序中统一编码风格
#7
这个问题我前两天也遇到过,后来用了struts2的标签库的标签,form表单里设置这个属性即可enctype="multipart/form-data"
#8
你这个是文件上传下载使用的属性好不好?
#9
可以试试这样看看
用byte[] b = dataXML.getBytes("iso8859_1"):返回字符串的一个byte数组b
如果b[i]有63,不用转码;
如果b[i]全大于0,那么为英文字符串,不用转码;
如果b[i]有小于0的,那么已经乱码,要转码。
建议最好还是将jsp页面的编码方式统一
或者再写个过滤器拦截指定的action
或者对这次action请求加个参数标记,当识别是这次特殊编码的请求时,对其转码就可以了
用byte[] b = dataXML.getBytes("iso8859_1"):返回字符串的一个byte数组b
如果b[i]有63,不用转码;
如果b[i]全大于0,那么为英文字符串,不用转码;
如果b[i]有小于0的,那么已经乱码,要转码。
建议最好还是将jsp页面的编码方式统一
或者再写个过滤器拦截指定的action
或者对这次action请求加个参数标记,当识别是这次特殊编码的请求时,对其转码就可以了
#10
可以用js里的转码方式然后自己写一个转码类
#11
额 我action是GBK,可是JSP那边是utf-8,action继续提交到我的接口方法里也是GBK啊,这里JSP提交过来到action不是应该用utf-8转gbk么?
#12
不过这样反过来试貌似也没起效
#13
JSP之前加过<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>了,没效果
数据库这个改编码方式貌似用不到,现在到action就已经是乱码了,还没提交到数据库了
#14
此楼写的最详细
#15
嗯,其实之前都是统一的GBK,就这次这个模块比较特殊得用UTF-8,下次开发都用utf-8了···吃一堑长一智···不过现在得解决眼前的问题
或者再写个过滤器拦截指定的action
或者对这次action请求加个参数标记,当识别是这次特殊编码的请求时,对其转码就可以了
额 俺在主题帖就问这个咋写了,兄台指点指点吧,以前过滤器都是直接/*,这里指定应该是制定具体的action还是指定jsp?如果是action的话是具体到某个方法,还是整个action的文件路径?之前写了一个指定到action.do和action的,反正都没起效似乎,不知道相对路径出了问题还是这样不对,而且因为之前有个全局过滤器了,这个过滤器怎么设置应该?放在全局过滤器前面还是怎样?
参数标记比较好弄的话指点指点也行···
#16
开始的时候就在action里了貌似不行··· 以前遇到转码都是用这个来解决··· 这次囧了
#17
建议全统一utf-8,要不试试response.setCharacterEncoding("UTF-8");
#18
确实应该当初就全统一为UTF-8,不过现在数据库啊,接口啊,其他的页面啊都是GBK了,现在如果改过去变动太多了···
response和request的setCharacterEncoding我都试过了,目前没效果,我在action的每个方法中最开头就设置这个了
#19
把请求和响应还有页面的编码弄成一样的就可以了。
#20
post提交:
单个页面设置request.setCharacterEncoding("")指定编码方式
或配置过滤器,可以很好解决乱码问题
get提交:
在tomcat\conf下server.xml配置文件中<Connector port="8080" ....../>内添加属性URIEncoding="UTF-8"即可,完整如下:
<Connector port= "8080 " protocol= "HTTP/1.1 "
connectionTimeout= "20000 "
redirectPort= "8443 " URIEncoding=”utf-8”/>
解决乱码问题
或单个页面内手动转换参数编码格式也可,
String str = request.getParameter("...");
byte[] bytesStr = str.getBytes("ISO-8859-1");
String str = new String(bytesStr, "UTF-8");
此时str便是UTF-8编码格式
#21
目前页面编码是utf-8,页面也设置request.setCharacterEncoding("utf-8")了。是post方式
我从另一个页面传到这个页面的值在提交action那边之前是正常的,没乱码,提交到action之后在action里是乱码···在action里response和request的setCharacterEncoding目前都试过了暂时不行还是
#22
在action里用
new String( dataXML.toString().getBytes( "gbk" ), "utf-8")
双汉字的话可以转过来,单个汉字还是乱码
new String( dataXML.toString().getBytes( "gbk" ), "utf-8")
双汉字的话可以转过来,单个汉字还是乱码
#1
new String( dataXML.toString().getBytes( "gbk" ), "utf-8");
这样才转成utf-8格式吧
这样才转成utf-8格式吧
#2
貌似楼上是正确的...
#3
试试楼上说的方法,看看行不行啊!
#4
尽量使用post提交。设置请求和响应过滤器设置字符编码
#5
urldecode
或者后台
new String( dataXML.toString().getBytes( "gbk" ), "utf-8");
或者jsp页面<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
或者数据库编码设置为utf-8
或者tomcat 中的server.xml添加项目编码
或者后台
new String( dataXML.toString().getBytes( "gbk" ), "utf-8");
或者jsp页面<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
或者数据库编码设置为utf-8
或者tomcat 中的server.xml添加项目编码
#6
new String( dataXML.toString().getBytes( "gbk" ), "utf-8"); 建议还是所有jsp页面和程序中统一编码风格
#7
这个问题我前两天也遇到过,后来用了struts2的标签库的标签,form表单里设置这个属性即可enctype="multipart/form-data"
#8
你这个是文件上传下载使用的属性好不好?
#9
可以试试这样看看
用byte[] b = dataXML.getBytes("iso8859_1"):返回字符串的一个byte数组b
如果b[i]有63,不用转码;
如果b[i]全大于0,那么为英文字符串,不用转码;
如果b[i]有小于0的,那么已经乱码,要转码。
建议最好还是将jsp页面的编码方式统一
或者再写个过滤器拦截指定的action
或者对这次action请求加个参数标记,当识别是这次特殊编码的请求时,对其转码就可以了
用byte[] b = dataXML.getBytes("iso8859_1"):返回字符串的一个byte数组b
如果b[i]有63,不用转码;
如果b[i]全大于0,那么为英文字符串,不用转码;
如果b[i]有小于0的,那么已经乱码,要转码。
建议最好还是将jsp页面的编码方式统一
或者再写个过滤器拦截指定的action
或者对这次action请求加个参数标记,当识别是这次特殊编码的请求时,对其转码就可以了
#10
可以用js里的转码方式然后自己写一个转码类
#11
额 我action是GBK,可是JSP那边是utf-8,action继续提交到我的接口方法里也是GBK啊,这里JSP提交过来到action不是应该用utf-8转gbk么?
#12
不过这样反过来试貌似也没起效
#13
JSP之前加过<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>了,没效果
数据库这个改编码方式貌似用不到,现在到action就已经是乱码了,还没提交到数据库了
#14
此楼写的最详细
#15
嗯,其实之前都是统一的GBK,就这次这个模块比较特殊得用UTF-8,下次开发都用utf-8了···吃一堑长一智···不过现在得解决眼前的问题
或者再写个过滤器拦截指定的action
或者对这次action请求加个参数标记,当识别是这次特殊编码的请求时,对其转码就可以了
额 俺在主题帖就问这个咋写了,兄台指点指点吧,以前过滤器都是直接/*,这里指定应该是制定具体的action还是指定jsp?如果是action的话是具体到某个方法,还是整个action的文件路径?之前写了一个指定到action.do和action的,反正都没起效似乎,不知道相对路径出了问题还是这样不对,而且因为之前有个全局过滤器了,这个过滤器怎么设置应该?放在全局过滤器前面还是怎样?
参数标记比较好弄的话指点指点也行···
#16
开始的时候就在action里了貌似不行··· 以前遇到转码都是用这个来解决··· 这次囧了
#17
建议全统一utf-8,要不试试response.setCharacterEncoding("UTF-8");
#18
确实应该当初就全统一为UTF-8,不过现在数据库啊,接口啊,其他的页面啊都是GBK了,现在如果改过去变动太多了···
response和request的setCharacterEncoding我都试过了,目前没效果,我在action的每个方法中最开头就设置这个了
#19
把请求和响应还有页面的编码弄成一样的就可以了。
#20
post提交:
单个页面设置request.setCharacterEncoding("")指定编码方式
或配置过滤器,可以很好解决乱码问题
get提交:
在tomcat\conf下server.xml配置文件中<Connector port="8080" ....../>内添加属性URIEncoding="UTF-8"即可,完整如下:
<Connector port= "8080 " protocol= "HTTP/1.1 "
connectionTimeout= "20000 "
redirectPort= "8443 " URIEncoding=”utf-8”/>
解决乱码问题
或单个页面内手动转换参数编码格式也可,
String str = request.getParameter("...");
byte[] bytesStr = str.getBytes("ISO-8859-1");
String str = new String(bytesStr, "UTF-8");
此时str便是UTF-8编码格式
#21
目前页面编码是utf-8,页面也设置request.setCharacterEncoding("utf-8")了。是post方式
我从另一个页面传到这个页面的值在提交action那边之前是正常的,没乱码,提交到action之后在action里是乱码···在action里response和request的setCharacterEncoding目前都试过了暂时不行还是
#22
在action里用
new String( dataXML.toString().getBytes( "gbk" ), "utf-8")
双汉字的话可以转过来,单个汉字还是乱码
new String( dataXML.toString().getBytes( "gbk" ), "utf-8")
双汉字的话可以转过来,单个汉字还是乱码