『壹』 springmvc 在web配置了編碼攔截器,並且我整個工程都是UTF-8格式的,為什麼responseText中文還是亂碼
<%@pagecontentType="text/html;charset=UTF-8"%>
<metahttp-equiv="Content-Type"content="text/html;charset=utf-8">
你所說的整個工程都是UTF-8格式,那麼jsp頁面上是不是專都加上了這兩屬句
『貳』 如何在Spring中解決中文亂碼的方法
可以編寫一個Filter
public class EncodingFilter implements Filter {
/** 編碼 */
String encoding = null;
/** 銷毀編碼 */
public void destroy() {
.encoding = null;
}
/**
* 執行過濾鏈,對請求和相應設置編碼
*/
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
if (encoding != null) {
// 對請求進行編碼設置
request.setCharacterEncoding(encoding);
response.setCharacterEncoding(encoding);
}
// 將處理權轉交給下一個處理器
chain.doFilter(request, response);
}
/**
* 初始化編碼,從配置文件中獲取編碼的值
*/
public void init(FilterConfig filterConfig) throws ServletException {
this.encoding = filterConfig.getInitParameter("encoding");
}
}
需要再Web.xm中注冊攔截器
<filter>
<filter-name>EncodingFilter</filter-name>
<filter-class>com.sato.filter.EncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>GBK</param-value>
</init-param>
</filter>
『叄』 通過spring依賴注入時,得到的實體對象的中文屬性值是亂碼,該怎麼解決
檢查一下你項目的編碼,改成utf8的
『肆』 springmvc js ajax請求 中文亂碼問題
初略的看了一下你的問題,大概明白了,出現亂碼的原因大概是你的伺服器編專碼問題,屬tomcat的默認編碼是ISO-8859-1這種編碼,所以如果你需要更改,tomcat/conf/server.xml中找到 Connector 在後面加上 URIEncoding="UTF-8" 即可,如果不更改的話,你就得在action中,也就是接受端用ISO-8859-1解碼回來,如new String(str.getBytes("ISO-8859-1"),"UTF-8");如果用了攔截器的話,就在攔截器中統一解碼好啦。你可以試試!希望能幫到你哦!
『伍』 spring MVC接收中文亂碼問題
1:表單提交controller獲得中文參數後亂碼解決方案
注意:jsp頁面編碼設置為UTF-8
form表單提交方式為必須為post,get方式下面spring編碼過濾器不起效果
<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%>
<formaction="${ctx}/user/addUser"name="userForm"method="post">
修改web.xml,增加編碼過濾器,如下(注意,需要設置forceEncoding參數值為true)
<filter>
<filter-name>characterEncodingFilter</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>
<filter-mapping>
<filter-name>characterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
2:表單提交controller獲得中文參數後正常顯示控制台,然後保存資料庫出現亂碼
注意:資料庫編碼是否支持中文
資料庫表和表欄位是否正確
在配置連接資料庫的參數設置修改:
<propertyname="url"value="jdbc:mysql://localhost:3306/dbname?useUnicode=true&characterEncoding=UTF-8"></property>第一種情況:
jsp頁面中文輸入,到controller亂碼,這時候需要設置的是在web.xml文件中添加一個編碼的過濾器(filter)將編碼統一為UTF-8,代碼如下:
Web.xml配置文件:
view
sourceprint?
01.<filter>
02.<filter-name>CharacterEncodingFilter</filter-name>
03.<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
04.<init-param>
05.<param-name>encoding</param-name>
06.<param-value>utf-8</param-value>
07.</init-param>
08.</filter>
09.<filter-mapping>
10.<filter-name>CharacterEncodingFilter</filter-name>
11.<url-pattern>/*</url-pattern>
12.</filter-mapping>
這里需要注意的是,最好把這段代碼放在web.xml中開頭的位置,因為攔截有順序,如果放在後面的話容易攔截不到。
第二種情況:
資料庫中文數據,jsp頁面顯示亂碼(不是嚴格意義上的亂碼,而是以問號的形式呈現)
由於我們前後台的數據交互使用的是json數據,出現這種情況的原因我也不太清楚,之前也沒遇到過,只能怪自己做過的項目太少,解決起來也不困難,只需要在轉json的時候設置一下編碼格式就可以了,代碼如下:
view
sourceprint?
1.response.setContentType("application/json;charset=UTF-8");//防止數據傳遞亂碼
寫上這句話就不會再出現亂碼了。
第三種情況:
頁面中文,傳遞到controller也是正確的,但是保存到資料庫之後就是亂碼(也不是嚴格意義的亂碼,跟上面一樣全是問號)
這個問題困擾了我一段時間,開始覺得資料庫的編碼格式不正確,重新創建了編碼格式為utf-8的資料庫也還是不可以,最後覺得是jboss的問題,我們的伺服器用的是jboss,上網查了資料在連接數據源的時候加上編碼格式就可以了
『陸』 spring亂碼問題,菜鳥求教
1:表單提交controller獲得中文參數後亂碼解決方案
注意: jsp頁面編碼設置為UTF-8
form表單提交方式為必須為post,get方式下面spring編碼過濾器不起效果
[html] view plain
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
[html] view plain
<form action="${ctx}/user/addUser" name="userForm" method="post">
修改web.xml,增加編碼過濾器,如下(注意,需要設置forceEncoding參數值為true)
[html] view plain
<filter>
<filter-name>characterEncodingFilter</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>
<filter-mapping>
<filter-name>characterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
2:表單提交controller獲得中文參數後正常顯示控制台,然後保存資料庫出現亂碼
注意:
資料庫編碼是否支持中文
資料庫表和表欄位是否正確
在配置連接資料庫的參數設置修改:
[html] view plain
<property name="url" value="jdbc:mysql://localhost:3306/dbname?useUnicode=true&characterEncoding=UTF-8"></property>
『柒』 為什麼使用了SPRING 過濾器還會出現中文亂碼
MVC的過濾器如果優先於spring的編碼過濾器就會出現亂碼情況 需要將spring的編碼過濾器優先等級提高
『捌』 不用spring怎麼寫filter來解決中文亂碼的問題,謝謝!在線等
可以編寫一個Filter
public class EncodingFilter implements Filter {
/** 編碼 */
String encoding = null;
/** 銷毀編碼 */
public void destroy() {
this.encoding = null;
}
/**
* 執行過濾鏈,對請求和相應設置編碼
*/
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
if (encoding != null) {
// 對請求進行編碼設置
request.setCharacterEncoding(encoding);
response.setCharacterEncoding(encoding);
}
// 將處理權轉交給下一個處理器
chain.doFilter(request, response);
}
/**
* 初始化編碼,從配置文件中獲取編碼的值
*/
public void init(FilterConfig filterConfig) throws ServletException {
this.encoding = filterConfig.getInitParameter("encoding");
}
}
需要再Web.xm中注冊攔截器
<filter>
<filter-name>EncodingFilter</filter-name>
<filter-class>com.sato.filter.EncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>GBK</param-value>
</init-param>
</filter>
『玖』 spring mvc用註解方式配置控制器,怎麼出現亂碼
1:表單提交controller獲得中復文參數制後亂碼解決方案
注意: jsp頁面編碼設置為UTF-8
form表單提交方式為必須為post,get方式下面spring編碼過濾器不起效果
[html] view plain
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
[html] view plain
<form action="${ctx}/user/addUser" name="userForm" method="post">
『拾』 在使用ssh框架中,出現了 中文亂碼問題 ,怎麼解決
解決亂碼幾小點:
1.配置過濾器,可以選擇自己寫,既然你用的SSH框架就更簡單了,直接用Spring的過濾器,web.xml里配置一下即可。
2.Jsp頁面設置編碼,所有地方都要相同,我習慣用GBK
<%@ page contentType="text/html;charset=GBK" %>
也可以使用HTML的頁面編碼配置
<meta http-equiv="Content-Type" content="text/html; charset=GBK">
3.配置Tomcat(我們用,別的伺服器另找)編碼
在server.xml中配置,如:
<Connector port="8080" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="GBK" />
4.如果還出現亂碼,只能用這招了,我很少用
new String(s.getBytes("ISO-8859-1"),"GBK")
一般用Form提交前兩種方式就不會出現亂碼,用get請求,在url後追加中文參數前兩種不管用,需配置Tomcat或者第四種,重新編碼