2012-03-24 46 views
1

我已經實現了一個PHP腳本。
我通過以下URL運行我的PHP腳本:http://server/script.php?param1=%80t%80PHP +字符編碼+ GET參數

因此,我將一個GET參數傳遞給我的PHP腳本。
該參數被命名爲param1。
param1包含URL編碼爲「%80t%80」的字符串「€t€」。

我的PHP腳本是用UTF-8規範編碼的。
我想知道哪些字符編碼適用於$ _GET [「param1」]中包含的字符串。

肯定$ _GET [「param1」]上的字符編碼不是UTF-8。
原因:在我的PHP腳本中的以下命令結果爲「80 74 80」,它是$ _GET [「param1」]的十六進制表示形式。

var_dump(unpack("H*", $_GET["param1"])); 

如果_GET $ [ 「參數1」]的字符編碼爲UTF-8,則以前的PHP命令將導致爲 「E2 82 74 AC 82 E2 AC」。

$ _GET [「param1」]上的字符編碼不是ISO-8859-1,因爲€符號不包含在IS0-8859-1字符集中。
要查看ISO-8859-1編碼表,請轉至http://en.wikipedia.org/wiki/ISO/IEC_8859-1
因此,mb_internal_encoding函數返回的PHP內部編碼不適用於$ _GET [「param1」],因爲它是IS0-8859-1。

有沒有人知道哪些字符編碼適用於$ _GET [「param1」]中包含的字符串?

+0

你爲什麼要使用解壓:

試試這個:

var_dump(unpack ("H*", urldecode("%80t%80"))); 

這個呢? – Andreas 2012-03-24 18:53:59

回答

0

我不確定我是否理解你爲什麼要使用解壓縮,同時試圖處理你正在嘗試解決的字符編碼問題。所以這裏有雲......

我想你想讀的$ _GET值[ '參數1']的東西,如:

是$ var = $ _GET [ '參數1'];我建議你嘗試urldecode $ var = urldecode($ _ GET ['param1']),然後使用函數來處理multiByte字符串http://gr.php.net/manual/en/ref.mbstring.php 或使用iconv函數。

希望以上幫助。

+0

我只是爲了測試目的而使用瞭解壓縮函數。我需要查看錶示包含在param1中的字符串的字節。我的最終目標是對來自GET參數的每個字符串進行UTF-8編碼。我已經計劃使用mb_convert_encoding php函數,但我需要知道哪個編碼最初用於表示GET數組中的字符串。 – user1139666 2012-03-24 20:45:12

0

肯定$ _GET [「param1」]上的字符編碼不是UTF-8。 原因:在我的PHP腳本中的以下命令結果爲「80 74 80」 ,它是$ _GET [「param1」]的十六進制表示形式。

這正是你所期望的,因爲這是你所寫的。參數%80t%80表示三個字符:十六進制80,「t」,十六進制80.%80表示「十六進制80」。你手動指定一個特定的十六進制值,字符編碼根本不會進入。

http://server/script.php?param1=%e2%82%ac%74%e2%82%ac