2010-12-14 79 views
3

我有一些問題,我想知道你們中的任何人能幫助我。口音,網址和火狐

我有我的網站&數據庫設置爲utf8。當我在查詢字符串部分輸入重音時出現問題轉向%E3,但是如果我在頁面內使用鏈接或表單,它會在網址中給出%C3%A3

我該怎麼辦?

編輯:讓我嘗試澄清這一點:

我想在我的網址(查詢字符串)使用重音符號,但我有一個很難有所得到這個工作跨越多個瀏覽器。一些瀏覽器如Firefox和IE會輸出不同的百分比編碼字符串,具體取決於我在頁面中使用表單還是在地址欄中輸入重音字符。就像我在我原來的問題說,ã的形式inputed變成%C3%A3在URL,但如果我在地址欄中鍵入ã,瀏覽器改變了對%E3在url 。

這對我來說,因爲如果我得到%E3,然後在PHP/HTML我得到一個未知字符複雜的事情(即鑽石的問號,對不對?)

希望這有助於 - 讓我知道除此以外。

+0

我編輯了我的問題,並查看了我以前提出的問題。謝謝。 – RS7 2010-12-14 02:22:01

+0

目前還不清楚:只有在HTML頁面上有表單時,瀏覽器纔會輸出URL。對於發生的情況,您必須在表單中輸入文本,然後服務器必須處理表單,然後瀏覽器可能會選擇呈現不同的URL。因此,以下面的形式闡明你的澄清:1.這就是我所做的。這是發生了什麼。 3.這是應該發生的。 – 2010-12-14 02:54:50

+0

@Martin:OP使用'method =「GET」'(實際上是HTML表單的默認方法)。服務器是否可以完全控制是否顯示不同的URL。服務器可能會選擇發送重定向,然後URL將更改爲服務器指定的重定向URL,否則URL將只是請求被觸發的URL(即,形式爲「action」屬性中指定的那個)在提交的值爲查詢字符串的情況下該方法是'GET')。 – BalusC 2010-12-14 03:02:19

回答

6

ã的形式inputed變爲%C3%A3在url

取決於形式編碼,這通常是從包含表單頁面的編碼服用。 %C3%A9是正確的UTF-8 URL編碼形式ã

如果我在地址欄中輸入ã,瀏覽器會在url中更改爲%E3。

這是依賴於瀏覽器的。當你把非ASCII字符的網址在地址欄:

http://www.example.com/test.p/café?café 

WebKit瀏覽器編碼,他們都爲UTF-8:

http://www.example.com/test.p/caf%C3%A9?caf%C3%A9 

這是國際海事組織最正確的,因爲每IRI。但是,由於歷史原因,IE和Opera使用操作系統的默認系統編碼來對輸入到查詢字符串中的文本進行編碼。所以,在西歐的Windows安裝(使用代碼頁1252),您可以:

http://www.example.com/test.p/caf%C3%A9?caf%E9 

對於未在系統中的編碼可用字符,IE和Opera替換它們與?。當查詢字符串中的所有字符或當使用UTF-8時,Firefox將使用系統編碼。

可怕且不一致,但用戶手動輸入查詢字符串的情況非常罕見。

+0

謝謝你的回答 - 這就是我所經歷的。我想我應該將URL更改爲非重音版本,以防用戶點擊或決定傳遞瀏覽器輸出的非編碼的URL。任何其他的選擇?再次感謝。 – RS7 2010-12-14 10:09:34

+0

我一直在嘗試更多,這真的讓我頭痛。我正在考慮去除口音,但是我嘗試過的所有方法仍然會給我替換字符,如果我在url中鍵入重音字符。我注意到谷歌接受它 - 你知道我該如何轉換/處理它?謝謝 – RS7 2010-12-14 13:00:14

+0

點擊一個URI並不是問題,只有當用戶試圖複製粘貼一個非ASCII查詢字符串的IRI時,您不必擔心。如果你想在頁面上放置一個可以被粘貼的URI,它必須已經被編碼爲'%':只需在UTF-8上使用'rawurlencode()'直接寫'...?foo = caf%C3%A9' 8串。加載時,瀏覽器通常會在地址欄中顯示未轉義的版本。我不會擔心用戶在URI中手動輸入字符。 – bobince 2010-12-14 19:11:15