我正在开发一个使用数据库中的字符串构建XML Feed的脚本。字符串是Facebook Open Graph API中用户输入的图像标题。根据facebook,这些字符串应该都是UTF8。所以我将标题导入数据库并将它们存储为utf8-unicode(我也试过utf8-bin)
但是在尝试显示输出XML提要时我总是遇到同样的错误,因为其中一个标题有一个奇怪的空白字符
This page contains the following errors:
error on line 63466 at column 14: Input is not proper UTF-8, indicate encoding !
Bytes: 0x0B 0x54 0x68 0x6F
Below is a rendering of the page up to the first error.
在数据库(phpmyadmin)和页面源代码(使用chrome)中,有问题的字符显示为空方形符号。
现在,如果我将有问题的字符复制并粘贴到转换器中,它会给我十六进制000B
解决这个问题的最简单方法是什么? 我还想先了解一下,为什么Facebook Graph API在不应该给我非utf8字符的时候
尝试失败:
答案 0 :(得分:1)
以下列出了我们在原始海报中找到和/或处理过的内容:
我们检查了上述情况,发现最初的问题是由vertical tabulation symbols爬进文本字段引起的。删除所述符号的好方法是运行[ ]
,其中$str = str_replace("\x0b", "", $str);
是要插入文本字段的字符串。重要的是不要将$str
替换为that might not be desired。
答案 1 :(得分:1)
如果0B始终位于字符串的开头,则将字符串追溯到其源,并查看它们是否为“BOM”编码。 Wikipedia on BOM。
至少回过头来看数据的各个步骤,这样我们就可以帮助推断出问题的根源。
注意:虽然表情符号和中文需要,但如果这是“真正的”问题,切换到for loop
$query = 'SELECT `Author`,`Name` from `table` where `Author` = $author AND `Name` = $name';
if($query != null){
insert new row
}
end for loop
将不会处理BOM。
(使用str_replace只是一个绑带)