2015-01-13 86 views
1

我試圖在URL中使用特殊的danish字符作爲GET參數。因此,例如,我有這個網址:數據庫選擇的URL中的特殊字符

 http://example.com?name=åge 

該網址將獲得自動轉換成ASCII等效,所以在URL它將讀取:

http://example.com?name=%E5ge 

當我訪問並打印出值它工作得很好,並顯示該參數爲: åge

但是,我使用它來選擇我的數據庫中的東西,這將無法正常工作。如果我在URL中使用ASCII版本,它將不會選擇任何形式的數據庫,只是給我一個空的結果。如果我強迫的URL不使用ASCII,所以它是:http://example.com?name=åge從數據庫中選擇時,它會正常工作,但是當我顯示的參數也顯示了這一點: Ã¥

我不知道怎麼去解決這個。任何幫助表示讚賞。

+1

'%E5'不是ASCII碼,而是ISO-8859-1。 (ASCII僅爲7位)。您應該使用UTF-8,而不是在URL編碼請求中(→→%C3%A5')和輸出處理中('Ã¥'是\ xC3 \ xA5的外觀當解釋爲latin1)。你的數據庫正在做正確的事情。 – mirabilos

+0

哦好吧,但我該怎麼做呢? 如果我正在製作這樣的鏈接: 然後鏈接將使用您所談論的ISO編碼,將å轉換爲%E5 。那麼我怎麼強制它使用UTF-8編碼呢? –

+0

瀏覽器通常應該使用UTF-8編碼本身(MSIE5.0有一個配置選項,雖然它通常關閉,但不知道更新的版本)如果你首先將你的頁面作爲UTF-8發佈,瀏覽器可能會得到一些線索,我還沒有看到瀏覽器不會像UTF-8一樣編碼爲 – mirabilos

回答

1

我將參數轉換爲UTF-8,然後準備一個UTF-8查詢數據庫,像這樣的東西:

$name = utf8_encode($_GET['name']); 
mysqli_query($mysqli_connector, "SET NAMES UTF8"); 

,然後準備查詢。

這應該工作。

我希望有幫助!

+0

啊,這是個竅門,我手動編碼/解碼 –

+0

儘管它仍然像這樣表現出來:即使在解碼之後,它也可以工作當我把它扔進數據庫時(不知道爲什麼)仍然在頁面上顯示?有任何想法嗎? –

+0

編碼網站時,字符集總是一個問題。根據我的經驗,我總是將數據庫,文件編碼和HTML設置爲UTF-8 就你而言,如果你開發了很多......我不知道。嘗試使用編碼/解碼或將html代碼更改爲utf8 SpongePablo