strtolower上的charset问题()

时间:2011-03-05 00:20:38

标签: php string character-encoding

我正在一个波兰的网站上工作。我将mysql表和列设计为utf8_general_ci并添加

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<?php uery = mysql_query("select * from messages order by id desc limit 1"); $array = mysql_fetch_array($query);
$string= $array["message"];
$string = strtolower($string);
echo "<br>$string"; ?>

结果类似于"prof. dr hab. in�. boles�aw pochopie�"

所以有两个问题,
1-为什么结果是未知的char会出现什么问题?我该怎么办呢? 2-utf-8和utf8_general_ci是否适用于波兰网站?

3 个答案:

答案 0 :(得分:2)

您必须将mb_strtolower用于多字节字符串(这也适用于php的许多其他字符串函数,请参阅manual)。

或者您可以直接从数据库中请求它:

SELECT LOWER(message) FROM messages ORDER BY id desc LIMIT 1

编辑:至于编码:utf8_polish_ciutf8_general_ci都可以。

答案 1 :(得分:0)

使用mb_strtolower(),它不会将一个字节视为一个字符。

如果您的平台上没有,则需要创建它。

Have a look at Kohana 3's utf8::strotolower helper

答案 2 :(得分:0)

使用utf8_polish_ci让MySQL进行排序。