顯示具有 中文編碼 標籤的文章。 顯示所有文章
顯示具有 中文編碼 標籤的文章。 顯示所有文章

2014年10月20日 星期一

測試 jQuery 傳送中文資料給 Tomcat


測試 jQuery 傳送中文資料給 Tomcat

The following examples had been tested on Mozilla's Firefox and Microsoft's IE. The document is provided as is. You are welcomed to use it for non-commercial purpose.
Written by: 國立中興大學資管系呂瑞麟 Eric Jui-Lin Lu
請勿轉貼
看其他教材

這個範例是對應 由 XMLHttpRequest 送出中文資料給 Tomcat,其主要的目的在於測試在 jQuery 的環境下,如何經資料(尤其是中文資料)傳送給 Tomcat。 在之前的對應文章中,我們說明了不同的開發環境以及瀏覽器對於傳送資料的作法不同, 而且目前也還沒有標準規範該如何做;我們經過多次實驗後得知,比較實用的做法是 瀏覽器端的 Javascript 在將資料送往 Tomcat 之前,最好先使用 encodeURIComponent() 對資料進行編碼。目前根據 jQuery 的文件,jQuery 在傳送資料給伺服器端之前, 會自動對傳送資料進行 encodeURIComponent() 編碼,這個功能讓我們的程式開發 又可以更輕鬆。 完成這個範例的步驟如下:

2012年10月13日 星期六

MySQL Server 與中文

MySQL Server 與中文

The materials presented in this web page is provided as is and is used solely for educational purpose. Use at your own risks.
Written by: 國立中興大學資管系呂瑞麟 Eric Jui-Lin Lu

請勿轉貼
看其他教材

絕大多數的 Java 程式開發人員在使用 MySQL 之後,都會發現 Java 程式 在存取中文資料的時候很容易出現亂碼,但是英文的資料卻不會。這個問題 之所以存在的主要原因之一就是資料的編碼;身為一個程式開發人員,如果你的 程式(不限定於 Java)發生了中文亂碼的情形,你應該問問自己以下的問題: 資料庫儲存中文資料時,是以什麼 樣的編碼方式儲存,大五碼嗎?資料庫跟客戶端程式互相傳遞資料的時候, 它們又是以什麼樣的編碼在傳遞,大五碼嗎?你的應用程式中的中文資料 是以什麼方式編碼,大五碼嗎?在了解了這些編碼的情形之後,絕大部分的 問題應該可以迎刃而解。

2012年9月28日 星期五

細談 URL 編碼 (Part IV)

細談 URL 編碼 (Part IV)

The following examples had been tested on Mozilla's Firefox and Microsoft's IE. The document is provided as is. You are welcomed to use it for non-commercial purpose.
Written by: 國立中興大學資管系呂瑞麟

請勿轉貼
看其他教材

在 Part IV 中,我們將之前的測試網頁改成 UTF-8 的編碼,在傳遞 URL 之前 仍然不進行編碼。使用者可以點選 測試網頁 來試試看;另外,makeRequest() 的內容跟前一個測試 網頁大同小異,只是這次呼叫的遠端 servlet 是 EchoUTF8。 請在測試網頁上點一下"確定"按鈕。如果使用 Firefox,你應該會看到如下的對話視窗:


細談 URL 編碼 (Part III)

細談 URL 編碼 (Part III)

The following examples had been tested on Mozilla's Firefox and Microsoft's IE. The document is provided as is. You are welcomed to use it for non-commercial purpose.
Written by: 國立中興大學資管系呂瑞麟

請勿轉貼
看其他教材

在探討 URL 編碼的 Part III 中,我們繼續之前的說明方式來討論 Ajax 網頁中負責傳送 URL 的物件 XMLHttpRequest 物件的編碼方式。 在 Ajax 網頁的 第一個測試網頁 中,網頁內容的編碼採用 Big5。 <form> 標籤的定義如下:
<form name="myform">
姓名: <input type="text" value="老呂" name="data"></input>
<input type="button" value="OK" onClick="makeRequest('http://xml.nchu.edu.tw:8080/xml/servlet/EchoBig5');"></input>
</form>

細談 URL 編碼 (Part II)

細談 URL 編碼 (Part II)

The following examples had been tested on Mozilla's Firefox and Microsoft's IE. The document is provided as is. You are welcomed to use it for non-commercial purpose.
Written by: 國立中興大學資管系呂瑞麟

請勿轉貼
看其他教材

Part I,我們使用了 Big5 來編寫 網頁。在這個部分,我們使用另一種常用的編碼 -- UTF-8 -- 來編寫網頁。 網頁內容幾乎跟 Part I 的測試網頁相同,幾個比較不一樣的地方:儲存 檔案的時候,記得要以 UTF-8 的編碼方式儲存;<meta> 標籤的 charset 要改成 UTF-8;遠端的 servlet 要改成 EchoUTF8。你可以 到這裡 看一下。

2012年9月25日 星期二

包含非英文的 URL 是如何被編碼的?

(06/04/2006)

這是看完 O’Conner 的筆記,避免日後忘記:以下的說明是針對瀏覽器的處理過程,至於由 XMLHttpRequest 所處理的方式,會依 browser 的不同而不同。
  1. 如果你的 HTML form 中包含非英文的資料,首先,browser 會先以產生這些非英文字的 numeric character references。以日文的”田中”為例,它的 numerical character references 分別為 & + # + 30000 以及 & + # + 20013(真正的寫法應該把 + 符號移除,但是 wordpress 會自動把它轉成中文字)。其中,30000 和 20013 代表 Unicode 的十進位值。
  2. 然後,這些 numeric character references 以 ISO-8859-1 編碼而形成所謂的 URL-encoded characters。同樣的以田中為例,它的 URL-encoded characters 為
    %26%2330000%3B%26%2320013%3B
  3. 依照這個預設的行為,後端程式接收到這個資料以後,他會將 URL-encoded characters 解回 numeric character references,但是可惜的是很多的後端程式是無法處理這個 numeric character references。
  4. 為瞭解決以上的困境,絕大部分的開發人員採用的方式是在自己的程式(例如使用 Javascript)在 submit 出去之前先對 URL 的非英文資料進行編碼,而大部分使用的編碼方式為 UTF-8。如果我們採用 UTF-8 的編碼的話,田中會變成 %E7%94%B0%E4%B8%AD。

要怎麼把非英文的資料(中文)經由 XMLHttpRequest 送給 Tomcat 的 servlet 呢?

(06/04/2006)

這個週末在嘗試 Dojo 和 Yahoo! User Interface Library (YUI) 的時候,才突然發現之前的 AJAX 範例都沒有從 XMLHttpRequest 傳送中文的資料給遠端的 Tomcat servlet。 而發現的原因在於為 Dojo 和 YUI 所寫的程式中,其中一個範例是由 browser 送出 一個中文的(Big5)欄位資料到遠端的 Tomcat servlet 處理,而處理的結果卻是亂碼。這樣子一來就打亂了我的休假,連續兩個晚上測到凌晨一、兩點 (對一個老人來說,是很大的折磨)。目前找到的資料中,以
的文章比較有參考價值。尤其,OC’onner 的文章直接說明目前的傳送以及 encoding 的方式並沒有標準,完全要看你所使用的工具。看了這個說明之後,測試的方向 就比較明確一些。大概需要檢查的細節有:
  • 由 XMLHttpRequest 送出去的 URL:如果 URL 包含 Big5 的資料,XMLHttpRequest 會不會 encode,而且又是以何種方式 encode?
  • server 是如何解讀收到的 URL:目前知道 Tomcat (我的主要 servlet 的開發 平台)是採用 ISO-8859-1 編碼方式來接收,因此解碼的方式可以用 ISO-8859-1 來進行。但是,如果 browser 送過來的資料是以 UTF-8 編碼,那要怎麼辦呢?
目前,已經找出 Microsoft IE 6.x 和 Firefox 1.5.x 的解決方案了以及大概的原因,細節請看前一篇的 AJAX 入門。