2010-04-20 60 views
1

問題是,GET query string受content ='text/html; charset = gb2312'html元標記屬性?

在常規的HTTP請求到服務器(非Ajax),是查詢字符串由GET方法傳遞到某些服務器,會受到影響由該指定的編碼:

<meta http-equiv='Content-Type' content='text/html; charset=gb2312'> 

如果答案爲否,如何爲GET方法的參數定義編碼模式?

例如: 如果我有一個html,看起來:

<html> 
<head> 
<meta http-equiv='Content-Type' content='text/html; charset=gb2312'> 
</head> 
<body> 
<form method="GET" action="/some/server"> 
    <input type="text" name="name1" value="someNon-ASCII_value1" /> 
    <input type="submit" /> 
</form> 
</body> 
<html> 

當用戶單擊該按鈕submit,會是怎樣的價值someNon-ASCII_value1的編碼?

+0

何時指定了編碼? GET字符串在哪裏指定? – 2010-04-20 16:46:31

回答

3

瀏覽器將使用與指示用於使用表單顯示頁面相同的編碼。這確實可以是HTML頭中meta content-type條目中指定的編碼,但是這可以被HTTP響應中的content-type頭覆蓋。

但是,您還需要考慮服務器端的正確URL編碼以解碼GET參數。目前還不清楚您使用的是哪個服務器,但是在例如Tomcat的情況下,您需要將<Connector>元素的URIEncoding屬性設置爲相同的編碼。

<Connector ... URIEncoding="gb2312"> 

另見this article更多的背景信息。

+0

謝謝。我確保通過運行簡單的Servlet示例,在meta標籤的'content'屬性中編碼是用於對get請求的查詢字符串進行編碼的。 – 2010-04-20 23:12:40

+0

不客氣。 – BalusC 2010-04-20 23:31:03

+0

對不起,但有沒有辦法讓JAVA服務器知道客戶端的字符編碼? (即通過一些請求頭??) – 2010-04-20 23:36:05