在memcached中存储外语(即非英语)文本

时间:2010-04-20 14:54:25

标签: php memcached

我在memcached中存储了一些文本值。这种字符串的一个例子是:

El Salvador (República De El Salvador)

当我尝试检索字符串时,我得到一个空字符串。我怀疑这与UTF-8字符串有关。我如何在memcached中存储外语文本?

1 个答案:

答案 0 :(得分: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>';