[英]How do I read a unicode url with PHP?
我有一個Unicode網址:\\ test.php?sText =Московский
我想使用$ _Get函數來處理sText的值。 我擁有的test.php代碼是:
<?php
$sVar = $_GET['sText'];
echo "Variable = $sVar";
?>
問題是上面的代碼是:變量= ??????????
我需要做什么?
header('content-type: text/html; charset=utf-8');
的UTF-8內容類型標header('content-type: text/html; charset=utf-8');
感謝您的所有反饋。
我已經嘗試了所有示例,但是即使保存為utf-8,我仍然會收到問號。
是否有可能需要添加/啟用php.ini設置才能啟用unicode支持?
當前,無論如何對我來說,以下代碼:
<html>
<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head>
<body>
<?php
$sVarControl = "Московский";
$sVar = $_GET['sText'];
echo "Control = $sVarControl <br />";
echo "Variable = $sVar <br />";
?>
</body>
</html>
產生以下輸出:
控制=Московский
變量= ??????????
因此,該頁面能夠使用並顯示unicode。 這可能是$ _GET函數的限制嗎?
編輯
我剛剛嘗試在Google Chrome瀏覽器中運行該頁面,它運行良好。 這使我認為它是IE設置。 但是呢 我如何解決呢?
這對我來說很好:
$sVar = $_GET['sText'];
echo urldecode($sVar);
我嘗試使用iconv()函數解決您的問題(函數的參數可能會有所不同,具體取決於您的系統配置):
$get = iconv('CP1251', 'UTF-8', $_GET['text']);
echo 'Variable = '.$get; // Variable = Московский
您可以閱讀有關iconv函數的信息 。 希望對您有用。
我終於解決了這個問題,謝謝大家的一些有益提示(有關快速答案,請參見本文的最后一段)。
我做錯了一些事情,這使事情變得困難。
當記錄未寫入我的數據庫時,我首先注意到我的編碼問題,數據庫和表都設置為utf-8,從而離開了php。
為簡單起見,我創建了一個測試php頁面來演示該問題。 當頁面從url獲取($ _GET)值時,加載測試頁面時,我在url test.php?sText =Московский中使用了unicode參數
我認為,對我來說,問題是IE如何互操作url,出於某種原因,它無法對其進行解碼或將其識別為unicode。 當我在Chrome中啟動失敗的頁面時,這變得很明顯,並且效果很好。
我繼續使用以下功能在Chrome和IE中輸出完整網址
<?php
function curPageURL() {
$pageURL = 'http';
if ($_SERVER["HTTPS"] == "on") {$pageURL .= "s";}
$pageURL .= "://";
if ($_SERVER["SERVER_PORT"] != "80") {
$pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
} else {
$pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
}
return $pageURL;
}
echo curPageURL();
?>
Internet Explorer 8回應了以下內容:
Chrome卻回顯了編碼的網址:
如您所見,chrome正在自動編碼url,PHP正在自動正確讀取和解碼url,大概是因為我將內容類型設置為UTF-8(感謝Philippe)。
我仍然不確定為什么IE會這樣,但是它使我朝着在調用頁面中編碼url的方向發展。 我正在用javascript調用頁面,所以嘗試了函數encodeURIComponent()
。 值得慶幸的是,此方法有效,現在我在CHROME和IE中獲得了相同的結果。
長話短說,如果我使用encodeURIComponent()
來編碼調用URL,那么我確保將目標php頁面的內容類型設置為header('content-type: text/html; charset=utf-8');
所有unicode url變量均已正確處理。
再次感謝你的幫助。 克雷格
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.