【发布时间】:2012-10-12 15:34:40
【问题描述】:
我正在尝试将字符串从 HTML-ENTITIES 转换为 UTF-8,然后将编码的字符串保存在我的数据库中。 html 实体是希腊字母,例如:νω
现在我尝试了数千种不同的方法,从仅使用 utf8_encode 或 html_entity_decode 开始,直到现在我遇到了函数 mb_convert_encoding()。
现在真正奇怪的是,在转换我的字符串然后输出它时,它被正确编码为 utf-8,但是当将此字符串插入我的数据库时,我最终得到类似:ξÏνω。
这是编码的代码:
header('Content-Type: text/html; charset=utf-8');
mb_internal_encoding('utf-8');
......
while($arr = $select->fetch_array(MYSQLI_ASSOC))
{
$text = $arr["greek"];
$result = mb_convert_encoding($text, 'UTF-8', 'HTML-ENTITIES');
$mysqli->query("UPDATE some SET greek = '".$result."'");
}
当输出我的查询然后在 phpmyadmin 中手动执行 sql 查询时,它工作正常,所以它似乎不是我的数据库的问题。将编码的字符串传输到我的数据库时一定有问题...
【问题讨论】:
-
数据库中的表是什么字符集?默认为 latin1,您需要将其更改为 utf-8。这是您应该检查的第一件事。
-
数据库设置为utf-8。
-
你能在调用 query() 函数之前回显你的查询吗?看起来对吗?
-
我回应了
UPDATE some SET greek = '".$result."',它被正确编码为utf-8(也在我的浏览器的源代码中)。这就是我得到的正确答案:UPDATE some SET greek = 'ξύνω'