2016-12-16 175 views
1

我使用Redis和PHP,使用phpRedis連接器。 當我用阿拉伯語保存單詞時,我無法檢索到這個單詞,它是返回編碼值。Redis阿拉伯語言解碼

在Redis的,如果我有連接問題解決:> Redis的-CLI --raw

這裏舉例:

酰胺:在/ var/WWW /核心bitercash $ redis的-CLI 127.0。 0.1:6379>設置XXجيد OK 127.0.0.1:6379>獲得XX 「\ XD8 \西飛\ xd9 \ x8a \ XD8 \ XAF」

酰胺:在/ var/WWW /核心bitercash $ redis- cli --raw 127.0.0.1:6379> get xx جيد 127.0.0。 1:6379>

是的,它的工作,但對於phpRedis是行不通的。 是退貨: ØÙيد

保存在redis中的值。

我不知道如何連接--raw選項爲phpRedis lib或haw在php中解碼文本「جيØ」。

+1

這肯定是一個客戶端問題,Redis的本身是不可知的編碼。如果你願意,你可以對這些文本進行網址編碼,並在將它們返回給客戶端時進行解碼。 –

回答

0

在您的問題中發佈的Redis中添加密鑰,將此代碼保存爲test.php在您的網絡服務器上並在瀏覽器中打開該頁面,字符顯示是否正確?

<!DOCTYPE html> 
<html> 
<head> 
    <meta charset="utf-8"> 
</head> 
<body> 
<?php 
$redis = new Redis(); 
$redis->connect('127.0.0.1', 6379); 
echo $redis->get('xx'); 
?> 
</body> 
</html> 

如果無法工作,包括在頁面的開頭這段代碼:

<?php ini_set('default_charset', 'utf-8'); ?> 
+1

是的,它的工作。我認爲我的問題是用PDO從MySQL中檢索數據。我將PDO conexion更改爲:$ pdo = new PDO(DSN,USER,PASSWORD,$ options = [PDO :: MYSQL_ATTR_INIT_COMMAND =>'SET NAMES utf8']); – amic