java中spring框架的頁面編碼問題集錦

解決springMVC中文亂碼問題(jsp頁面編碼爲utf-8

1. 表單提交controller得到中文參數後亂碼解決方案

Form表單提交方式必須爲post ,get方式spring過濾器不起做用html

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> java

<form action="${ctx}/user/addUser" name="userForm" method="post"> mysql

解決方案:修改web.xml,增長編碼過濾器web

  1. <filter>  
  2. <filter-name>characterEncodingFilter</filter-name>  
  3. <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>  
  4. <init-param>  
  5. <param-name>encoding</param-name>  
  6. <param-value>UTF-8</param-value>  
  7. </init-param>  
  8. <init-param>  
  9. <param-name>forceEncoding</param-name>  
  10. <param-value>true</param-value>  
  11. </init-param>  
  12. </filter>  
  13. <filter-mapping>  
  14. <filter-name>characterEncodingFilter</filter-name>  
  15. <url-pattern>/*</url-pattern>  
  16. </filter-mapping>  

 

 

在配置鏈接數據庫的參數設置修改:spring

  1. <property name="url" value="jdbc:mysql://localhost:3306/dbname?useUnicode=true&characterEncoding=UTF-8"></property>  

 

第一種狀況:sql

jsp頁面中文輸入,到controller亂碼,這時候須要設置的是在web.xml文件中添加一個編碼的過濾器(filter)將編碼統一爲UTF-8數據庫

解決:web.xml配置文件json

<filter>服務器

02.<filter-name>CharacterEncodingFilter</filter-name>app

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的時候設置一下編碼格式就能夠了

response.setContentType("application/json;charset=UTF-8");//防止數據傳遞亂碼

 

第三種狀況:頁面中文,傳遞到controller也是正確的,可是保存到數據庫以後就是亂碼(也不是嚴格意義的亂碼,跟上面同樣全是問號)

解決:鏈接數據庫時加上格式

<datasource jta="true" jndi-name="java:jboss/datasources/JcMysqlDS" pool-name="JcMysqlDS" enabled="true" use-java-context="true">

02.<connection-url>jdbc:mysql://192.168.24.46/ITOO_BASIC_BASIC?useUnicode=true&characterEncoding=UTF-8</connection-url>

03.<driver>mysql</driver>

04.<pool>

05.<prefill>false</prefill>

06.<use-strict-min>false</use-strict-min>

07.<flush-strategy>FailingConnectionOnly</flush-strategy>

08.</pool>

09.<security>

10.<user-name>root</user-name>

11.<pass<a href="http://www.it165.net/edu/ebg/" target="_blank" class="keylink">word</a>>123456</pass<a href="http://www.it165.net/edu/ebg/" target="_blank" class="keylink">word</a>>

12.</security>

13.</datasource>

2. Java亂碼問題:

1.頁面亂碼

在相應的jsp頁面或者html頁面設置相關的字符集便可

<%@page language="java" contentType="text/html; charset=utf-8"

    pageEncoding="utf-8"%>

2.傳值亂碼

第一種解決方案:

<!-- 配置請求過濾器,編碼格式設爲UTF-8,避免中文亂碼-->

    <filter>

      <filter-name>springUtf8Encoding</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>

第二種解決方案:

設置request字符集

先打印request自己默認的字符集

System.out.println(request.getCharacterEncoding());

②打印的不是須要的字符集,則設置相應的字符集便可

request.setCharacterEncoding("UTF-8");

若是2處理不了就用這個解決

String str=newString((request.getParameter("bigQuestionTypeName")).getBytes("iso-8859-1"),"utf-8")

3.存入數據庫亂碼

標準狀況會在相應的後面加上相應的字符集設置

jdbcUrl=jdbc:mysql:///itcastoa?useUnicode=true&characterEncoding=UTF-8

useUnicode就不用說了,鏈接數據庫中設置的字符集,&這是什麼的?這就有問題了,在xml中&是&的轉義字符。若是你是用xml來配置對應的數據庫鏈接配置的話就沒有什麼問題了。可是若是用的是**.properties就有問題了,則必須將amp除去便可。

②數據庫

分別設置服務器、數據庫和數據表部分的編碼,必須設置鏈接編碼

mysql> SET character_set_client='gbk';

mysql> SET character_set_connection='gbk'

mysql> SET character_set_results='gbk'

設置好鏈接編碼,就能夠插入中文。(其實用一句話就能夠解決了)

查看數據庫編碼格式

show variables like 'character_set_%';

查看數據庫中的表的建立

show create table tablename;

設置數據庫編碼格式

setnames 'gbk';

 

 

2018年11月12日19:53:38  

相關文章
相關標籤/搜索