UTF-8 字符编码战斗 json_encode()
2022-08-30 14:49:29
寻求
我希望获取具有重音字符的行。列 () 的编码为 。NAME
latin1_swedish_ci
守则
以下查询使用 phpMyAdmin 返回:Abord â Plouffe
SELECT C.NAME FROM CITY C
WHERE C.REGION_ID=10 AND C.NAME_LOWERCASE LIKE '%abor%'
ORDER BY C.NAME LIMIT 30
下面显示预期值(函数被调用):db_fetch_all( $result )
while( $row = mysql_fetch_assoc( $result ) ) {
foreach( $row as $value ) {
echo $value . " ";
$value = utf8_encode( $value );
echo $value . " ";
}
$r[] = $row;
}
显示的值:5482 5482 Abord â Plouffe Abord â Plouffe
然后使用以下内容对数组进行编码:json_encode
$rows = db_fetch_all( $result );
echo json_encode( $rows );
问题
Web 浏览器收到以下值:
{"ID":"5482","NAME":null}
而不是:
{"ID":"5482","NAME":"Abord â Plouffe"}
(或编码的等效项。
问题
文档指出适用于 UTF-8。我可以看到值从 LATIN1 编码为 UTF-8。但是,在调用 之后,值将变为 。json_encode()
json_encode()
null
如何正确编码 UTF-8 值?json_encode()
一种可能的解决方案是使用Zend框架,但如果可以避免,我宁愿不要这样做。