1. 程式人生 > >javaWEB專案中的中文亂碼問題總結

javaWEB專案中的中文亂碼問題總結

寫這篇部落格主要就是在做專案的時候,碰到後臺到前臺資料亂碼的問題,並藉此總結平常碰到的各種編碼設定,並且也百度了很多,有時候也是經常想不起來,所以記錄一下,方便以後檢視!!!

 

場景:

 在實際運用場景中,當前臺發起請求後,我們需要從後臺返回資料給前臺(前臺模糊查詢),這時,如果返回的資料中包含中文,則經常會出現在後臺查詢出來都是好好,但是傳輸回去就莫名的亂碼了,而且,我們明明已經在 web.xml 中進行編碼過濾了,但還是亂碼,讓人很煩!

解決辦法:

第一種:那就在 controller 中的每個方法的  @RequestMappering 註解中進行編碼設定

@RequestMapping(value = "/queryUserById",produces = "text/plain;charset=utf-8")

上面這種可以解決亂碼,但是要在沒一個註解中都寫上這種,感覺程式碼看起來也不美觀,而且都是做著重複的動作,所以,本人很喜歡用第二種方法。

第二種:直接在spring-mvc.xml的配置檔案中,自定義訊息轉換器的編碼,這樣就可以設定一次就行了

<!-- 解決前臺到後臺傳引數造成的中文亂碼問題 -->
	<mvc:annotation-driven>
		<mvc:message-converters register-defaults="true">
			<bean class="org.springframework.http.converter.StringHttpMessageConverter">
				<property name="supportedMediaTypes">
					<list>
						<value>application/json;charset=utf-8</value>
						<value>text/html;charset=utf-8</value>
						<value>application/x-www-form-urlencoded</value>
					</list>
				</property>
			</bean>
		</mvc:message-converters>
	</mvc:annotation-driven>

以上就可以解決不用配置多次,重複寫一樣的程式碼就可以解決,有的人可能習慣這樣寫,有的不習慣,所以也有很多種方法,大家也可以完全寫編碼自定義類,然後交給spring處理,都是可以的。

第三種:設定tomcat編碼:為解決以get方式提交的引數出現亂碼,新增

修改tomcat下的conf/server.xml檔案, 新增URIEncoding=”UTF-8”

<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8" />

第四種:可以在每一個方法內的最前面加上以上程式碼

response.setContentType("text/html");

response.setCharacterEncoding("utf-8");

最基本配置就是在web.xml中採用編碼過濾器來解決資料傳輸的中文問題。在WEB.XML中配置一個編碼過濾器,內容如下:

<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>
  <filter-mapping>
    <filter-name>encodingFilter</filter-name>
    <url-pattern>*</url-pattern>
  </filter-mapping>

解決HTML頁面中的中文問題:

<META http-equiv=Content-Type content="text/html;charset=utf-8">

解決JSP頁面中的中文問題

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

如果以上寫的哪裡有問題,請敬請諒解!