我在数据库中遇到UTF-8字符编码失败的问题。
当我用php和json_encode()
读取它时,json_encode($content)
失败并返回一个空字符串。
$test = array('meep' => base64_decode('7b6Y'));
echo json_encode($test)."\n";
if(json_last_error() == JSON_ERROR_UTF8) {
echo "fail\n";
}
告诉我为什么这不会打印任何其他内容然后“失败”。或者更好的是,输入内容是什么。
在这种情况下,使用目标更好地存储字符串的答案是无用的!
答案 0 :(得分:0)
使用预定义的字符集可以在字段中写入最差的内容!
如果数据无法恢复且必须快速修复?! 这是一个脏但不是完全丢失的方法,以防止json_encode()的崩溃:
if(!mb_check_encoding($oldContent, "UTF-8")) {
$newContent = '';
for($e = 0; $e < count($oldContent); $e++) {
if(mb_check_encoding($oldContent[$e], "UTF-8")) {
$newContent .= $oldContent[$e];
} else {
trigger_error("Bad char at ".$e);
}
}
$oldContent = $newContent;
}