extjs和ajax中文亂碼問題

來源:互聯網
上載者:User

在Ext的使用過程中,一不留心就出現了亂碼,包括在用戶端提交給伺服器的資料中出現了亂碼和伺服器端返回給用戶端的資料中出現了亂碼,下面簡單分析一下出現亂碼的原因。

  在一次頁面瀏覽過程中,用戶端對一個URL發起瀏覽請求,服務端針對這次請求進行解析,而在字元編碼解析方面,首先他檢查該頁面中的字元編碼設定,即<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />,這樣,在頁面中顯示聲明了字元編碼為UTF-8,伺服器就會將該頁面用UTF-8的編碼輸出,而如果頁面中沒有顯示聲明,在伺服器中都有一個預設的字元編碼,比如GB2312,針對沒有聲明的檔案,他會用預設編碼輸出,這個時候,如果頁面輸出又是UTF-8,這樣就會出現亂碼。

  而在Ext中的提交資料的過程中,Ext架構用的是都是UTF-8編碼,而且通過JSON提交的資料也是UTF-8編碼,所以要求所有的檔案都是UTF-8編碼。

解決亂碼的方法

    以下幾項首先必須要在平時的編碼過程中做到:

  (1) JAVA後台檔案加入 response.setContentType("text/html");
  response.setCharacterEncoding("utf-8");

  (2)在檔案中顯示聲明字元編碼,<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

  (3)對於提交中出現的亂碼,在Ext中可以修改Request Header中Content-Type的設定,具體的方法為:Ext.lib.Ajax.defaultPostHeader += ";charset=utf-8";

  最後,問題還可能出現在檔案的儲存格式上。就是你把代碼檔案儲存的時候,如果開發環境預設儲存的不是UTF-8格式,那麼也會出現問題! 所以就要對開發環境也有一個要求。

開發環境的配置

    如果採用記事本來編寫儲存代碼檔案(.js),那這個就會出問題,主要是由於在windows系統裡記事本預設的編碼格式是ANSI,這樣基本上和目前網頁中編碼的格式都不同因此就會出現編碼格式不正確的問題。解決辦法就是開啟xx.js檔案然後另存新檔,在檔案類型處選擇utf-8編碼格式就可以了。

當然,主流還是使用MyEclipse,所以說一下MyEclipse裡要配置哪些地方。

Preferences->General->Content Types 選中Text 編輯下面的Default encoding 為utf-8然後Update。
Preferences->General->Content Types->Editors->Text Editors->Spelling 下Encoding 選 Default(UTF-8)
Preferences->General->Content Types->Workspace下Text File Encoding 選 Other: UTF-8

最後如果還出現亂碼 , 利用
System.out.print(request.getCharacterEncoding());
System.out.print(response.getCharacterEncoding());
 
察看request 或 response 編碼是否不是utf-8
若不是,利用web.xml中的 filter 解決.

 <filter>
  <description>no</description>
  <display-name>EncodingFilter</display-name>
  <filter-name>EncodingFilter</filter-name>
  <filter-class>
   com.hope.filters.SetCharacterEncodingFilter
  </filter-class>
  <init-param>
   <param-name>encoding</param-name>
   <param-value>utf-8</param-value>
  </init-param>
 </filter>
或者設定
<globalization responseEncoding="utf-8" fileEncoding="utf-8" requestEncoding="utf-8"/>

 

本文來自CSDN部落格,轉載請標明出處:http://blog.csdn.net/linshutao/archive/2010/10/22/5959973.aspx

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.