2012-08-03 48 views
4

我正在創建一個涉及將中文字符作爲url參數發送的php應用程序。中文字符的PHP urlencode

我要送查詢,如:

http://xyz.com/?q=新

但在xyz.com腳本不會自動編碼字符中國。所以,我需要明確地發送一個編碼的字符串作爲參數。它變爲:

http://xyz.com/?q=%E6%96%B0

的問題是,PHP不正確編碼字符中國。

我試過urlencode()rawurlencode()。但他們給%D0%C2(不適用於我的目的)而不是%E6%96%B0(適用於xyz.com)作爲輸出。

我使用this網站來創建後者編碼的字符串。

我也定義了header('Content-Type: text/html; charset=gb2312');來正確顯示中文字符。

有什麼我可以做的,以便正確地對中文字符進行urlencode編碼嗎?

謝謝! PS:我是一個相對較新的程序員,不懂中文。

回答

4

您是使用您在頁眉中指定的字符集的URL編碼。 %D0%C2 is in gb2312; %E6%96%B0在UTF-8中是新的。將你的字符集切換到UTF-8,你應該修復這個問題,並且仍然能夠顯示簡體中文漢字。

0

爲了再現您的問題,我創建了一個簡單的PHP文件:

<?php 
var_dump(urlencode('新')); 
?> 

首先我用UTF8編碼,得到了%E6%96%B0。之後我換成了GB2312,並拿到了%D0%C2

http://meyerweb.com/eric/tools/dencoder/他們似乎使用JavaScript,這是UTF8能力,因此也返回%E6%96%B0

PS:當從GB2312更改爲UTF8時,一些編輯可能會破壞某些國際化代碼的代碼。所以請確保在轉換之前獲得文件的副本!