我的SQL数据库中有一些行存在问题。数据库中存在具有以下字符的列的行:
Macyâ¢Â¢â€œ购买1&我们将捐出1¢......
我已经知道当我将这些行插入表格时,我搞砸了。我有一个.csv
文件,其中包含许多行,其中包含UTF-8字符,这些字符是通过抓取几个网页来填充的。 我知道我不应该使用utf8_decode来解码来自MySQL的数据,并且当我将数据插入表格时我应该有正确的编码。但是,重新抓取数据并重新插入数据会带来很大的不便,所以我现在正在寻找这个解决方案。
当我尝试使用utf8_decode($row["description"])
,其中$row["description"]
是上面的字符串时,输出什么都没有,我收到错误。我的代码看起来像这样:
$events[] = array(
'description' => utf8_decode($row['description']),
// some other fields...
);
当我尝试将php数组回显到这样的javascript:
var events = <?php echo json_encode($events); ?>;
我收到一条错误消息,指出控制台中未定义events
。
问题是这只发生在少数几个查询中,我可以回复utf8_decode
的结果而没有错误。
我的意思是我在表格中有相似(如果不相同)字符的行:
New Chipotleâ€〜GuacHunter’体验重新...
当我utf8_decode
字符串时,它很好地出现了:
New Chipotle'Guac Hunter'体验奖励玩家免费筹码和鳄梨酱
我还尝试回显utf8_decode($ row [“description”]),这些选择查询没有返回任何内容,看看会发生什么。已解码的字符串正确回显到页面。所有奇怪的角色都被人类可读的角色所取代。我将$events[]
数组的description
属性更改为$row["description"]
并添加了此内容:
echo utf8_decode($row["description"]);
这是当我回显行的utf8_decode
d版本时输出的样子。上半部分是解码版本,在正确显示撇号时正确解码。但是,在下半部分,您可以看到撇号被奇怪的a-hat字符替换。
这让我更加困惑 - 为什么我可以回复utf8_decoded
版$row["description"]
但不能将其放入数组中?
答案 0 :(得分:0)
我通过在 角色上执行preg_replace解决了这个问题。看起来这是输出的唯一问题。