SP頁面是UTF-8,此時該頁面提交到action時,action中的中文值亂碼如何解決
大概說下整體,基本所有JSP都是設成的GBK。這個部分首先我是一個頁面,分為左,右上,右下,右上的JSP提交時需要提交到其余兩個頁面,所有一個用的是action提交到右下,左側就用的location左頁面加參數來做的
但其中左側頁面有特殊用途所以需要設置為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')來取參了
------解決方案--------------------
new String( dataXML.toString().getBytes( "gbk" ), "utf-8");
這樣才轉成utf-8格式吧
------解決方案--------------------
盡量使用post提交。設置請求和響應過濾器設置字符編碼
------解決方案--------------------
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頁面和程序中統一編碼風格
------解決方案--------------------
可以試試這樣看看
用byte[] b = dataXML.getBytes("iso8859_1"):返回字符串的一個byte數組b
如果b[i]有63,不用轉碼;
如果b[i]全大於0,那么為英文字符串,不用轉碼;
如果b[i]有小於0的,那么已經亂碼,要轉碼。
建議最好還是將jsp頁面的編碼方式統一
或者再寫個過濾器攔截指定的action
或者對這次action請求加個參數標記,當識別是這次特殊編碼的請求時,對其轉碼就可以了
------解決方案--------------------
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編碼格式