2009-09-02 83 views
3

如果我有一個設置爲UTF-8的HTML頁面。 然後我在表單中輸入編碼爲big5的漢字並提交。 什麼編碼它在服務器端? 它會自動轉換爲UTF-8嗎? 或者它是如何工作的? 謝謝!它是什麼編碼?

補充1: 其實我真的不確定,爲什麼瀏覽器可以決定使用哪種編碼?因爲編碼是由IME生成的。例如:我用來輸入中文字符的工具,對吧?

supplement2: 如果一切就像什麼「邁克爾·馬德森」在下面迴應說,那怎麼能ASP.NET處理這個問題,這樣,無論而且不管我怎麼輸入表單中的字符,它會不會總是被破壞,但jsp不能?

回答

3

瀏覽器使用Unicode - 當字符在那裏輸入時,它們在內部存儲爲Unicode。當表單被提交時,它以任何合適的編碼輸出字符 - 通常是頁面的編碼。

如果您正在討論從Big5文檔進行復制/粘貼,那麼當它插入到剪貼板時它已經被轉換爲Unicode - 甚至當文檔被加載時(具體取決於您的編輯器)。

如果您正在討論使用一些IME來輸入字符,那麼問題就會有問題,因爲您的IME應該專門用於Unicode,因此Big5編碼不會涉及。如果是這樣,那麼在Unicode與Unicode之間進行轉換時會有一些層次,因此無論該部分如何,瀏覽器都不會知道源編碼。

+0

爲什麼?系統可以自動將字符串從big5轉換爲utf-8? – MemoryLeak 2009-09-02 15:05:43

+1

是的。操作系統知道如何從每個編碼中的值轉換爲實際字符,當操作系統正在使用操作系統時,操作系統的內部編碼將用操作系統的內部編碼來表示。這就是爲什麼傳統應用程序仍能在Windows上工作的原因--Windows在內部使用UTF-16,但使用特定語言代碼頁的傳統應用程序可以調用兼容性層,基本上在發送給函數的文本之後調用Unicode版本的API函數已被轉換(當然,從API函數返回的文本也以其他方式轉換)。 – 2009-09-02 15:48:18

+0

由於瀏覽器支持Unicode,因此它可以理解並處理操作系統給予它的東西,而無需轉換。一旦被告知提交表單,它就會從系統編碼轉換爲服務器請求的編碼併發送轉換後的文本。 – 2009-09-02 15:50:19

0

瀏覽器可以在big5發送它的文章,如果它想的話,服務器應該能夠處理它。但是,你是什麼意思,「我用格式編碼big5輸入中文字符」?當你輸入字符時,確定由瀏覽器決定使用哪種編碼?

+0

其實我真的不確定,爲什麼瀏覽器可以決定使用哪種編碼?因爲編碼是由IME生成的。例如:我用來輸入中文字符的工具,對吧? – MemoryLeak 2009-09-02 14:53:38

+0

這只是以某種適當的方式將文本數據導入瀏覽器。重要的是文本值,而不是涉及的編碼。取決於操作系統,瀏覽器和IME可能以多種方式發生 - 但只要瀏覽器知道要傳輸哪些Unicode字符,就可以決定使用任何它喜歡的編碼(並將其放入標頭)。 – 2009-09-02 14:58:51

+0

我們可以看到的是「文本值」,但計算機只能識別HEX值的編碼,對吧?所以如果你用IME輸入字符並生成big5字符,那麼瀏覽器會自動將它轉換爲UTF-8嗎? – MemoryLeak 2009-09-02 15:04:43