2010-04-20 100 views
2

我在memcached中存儲了一些文本值。這樣一個字符串的一個例子是:在memcache中存儲外語語言(即非英語)文本

El Salvador (República De El Salvador) 

當我試圖檢索字符串時,我得到一個空字符串。我懷疑這與UTF-8字符串有關。我如何將外文文本存儲在memcached中?

回答

2

我不是一個Unicode的專家,但是這激起了我的好奇心,所以我寫了一個小代碼:

http://static.bwerp.net/~adam/20100420/m.php

似乎工作相當不錯,在這裏。你說你認爲這是一個UTF-8問題。如果你刪除重音字符會發生什麼?

對於後人,這裏的鏈接文件的代碼:

header('Content-type: text/html; charset=utf-8'); 

echo '<pre>'; 

$s = utf8_encode("El Salvador (Rep\xfablica De El Salvao)"); 
echo '$s = ', $s, '<br>'; 
var_dump(mb_detect_encoding($s)); 

$m = new Memcache; 
$m->addServer('localhost', 11211); 

var_dump($m->set('foobarcheeze', $s)); 
var_dump($m->get('foobarcheeze')); 

echo 'strlen($s) = ', strlen($s), '<br>'; 
echo 'mb_strlen($s) = ', mb_strlen($s), '<br>'; 
echo 'mb_strwidth($s) = ', mb_strwidth($s), '<br>'; 
+1

@adam:謝謝,您的輸入。我可能一直在咆哮錯誤的樹。我有其他變量可以在沒有任何來自memcache的問題的情況下檢索到。在第一次檢查時,看起來所有缺失的字符串都是帶有加重字符的字符串。我會在今晚的晚些時候看一看,並告訴你。 – morpheous 2010-04-20 16:10:37

+0

@adam:謝謝。這是標題指令,使所有的差異。我現在接受你的答案。 – morpheous 2010-04-22 15:31:10

相關問題