我有一個編碼的字符串爲「%87123」。現在,當我顯示該字符串時,它應該被解碼爲「‡123」。我的代碼是象下面這樣:如何轉換解碼php中的一些特殊字符?
$code = '%87123';
echo urldecode($code);
die;
我曾與許多不同的功能,如,urldecode,rawurldecode,ヶ輛,的iconv和其他許多人試過。 如果有人能爲此提供幫助。 在此先感謝。
我有一個編碼的字符串爲「%87123」。現在,當我顯示該字符串時,它應該被解碼爲「‡123」。我的代碼是象下面這樣:如何轉換解碼php中的一些特殊字符?
$code = '%87123';
echo urldecode($code);
die;
我曾與許多不同的功能,如,urldecode,rawurldecode,ヶ輛,的iconv和其他許多人試過。 如果有人能爲此提供幫助。 在此先感謝。
看起來像是一個url編碼版本的字符串,沒有在標準的UTF-8
編碼(如今常用的,特別是在網絡環境中),但在老式的,MS-Windows專有的Windows-1252
編碼。這確實是在某些MS-Windows版本仍在使用,爲MS試圖成爲一個有點不適應它與ISO-8859-1
或ISO-8859-15
幾乎相同,但作爲典型。您現在遭受的是衆所周知的戰略的結果...
看看這個簡單的示例腳本:
<?php
var_dump(urlencode('‡123'));
var_dump(urldecode('%87123'));
var_dump(iconv('Windows-1252', 'UTF-8', urldecode('%87123')));
輸出是:
string(12) "%E2%80%A1123"
string(4) "�123"
string(6) "‡123"
所以解碼結果一些可以解釋爲Windows-1252
編碼的字符串。如果是這樣,如果你然後將其轉換爲編碼爲UTF-8
,你會得到預期的結果...
所以你的情況最有可能的是一些編碼在MS內部編碼的字符串被注入到Web環境中而沒有得到重新編碼。由於PHP無法以某種方式奇蹟般地猜測它執行了其解碼工作並提供了結果,這是一個無效的UTF-8編碼字符串。你必須告訴PHP它應該假定什麼編碼,它不可能自動檢測到。
不知道爲什麼你想到的是字符串得到解碼,以您的期望......嘗試'進行urlencode( '‡123')'我得到'%E2%80%A1123' ... – arkascha