使用mysql和php。
在我的数据库中,我的列值如下所示。
Preaqueça o forno médio (180ºC).
但是当我使用php检索它时,它显示在字符串下面。
Preaqueu00e7a o forno mu00e9dio (180u00baC).
字符编码有问题。有什么想法来解决它吗?
答案 0 :(得分:0)
你似乎有两个问题。
ç
是ç
的Mojibake,而º
是º
的Mojibake。为此,您需要检查:
可见。)
Hex 00e7
看起来像" Unicode代码点"对于ç
,但目前还不清楚如何创建它。
让我们从SELECT col, HEX(col) FROM ...
开始查看已存储的内容。还提供SHOW CREATE TABLE
。 (Test the data中的更多详情。)
修复Mojibake问题并执行HEX后,开始一个新问题。 (我担心这个帖子会变得太混乱而无法保留。)
答案 1 :(得分:0)
我使用json_encode来显示select查询的输出。这导致了这个问题。
function my_json_encode($arr)
{
//convmap since 0x80 char codes so it takes all multibyte codes (above ASCII 127). So such characters are being "hidden" from normal json_encoding
array_walk_recursive($arr, function (&$item, $key) { if (is_string($item)) $item = mb_encode_numericentity($item, array (0x80, 0xffff, 0, 0xffff), 'UTF-8'); });
return mb_decode_numericentity(json_encode($arr), array (0x80, 0xffff, 0, 0xffff), 'UTF-8');
}
使用此函数而不是默认的json_encode.And效果很好。