PHP Json_encode-特定列MySQL上没有Json数据

PHP Json_encode-特定列MySQL上没有Json数据,php,mysql,json,Php,Mysql,Json,我正在尝试使用mysql数据库为iPhone制作一个简单的journalview应用程序。 我正在使用php连接数据库,并将数据编码为json。 我使用的是一个非常简单的数据库,有3列: 身份证件 主题 消息 当我从表中选择id和主题时,JSON数据将正确显示。 当我选择所有内容或单独选择消息时,我只看到一个白色屏幕。 消息列为数据类型文本,应该能够有奇怪的符号/、\、¨、$、%、空格、行等,。。。 获取要显示的消息数据的唯一方法是在连接文件中执行以下操作: while($r = mysql_f

我正在尝试使用mysql数据库为iPhone制作一个简单的journalview应用程序。 我正在使用php连接数据库,并将数据编码为json。 我使用的是一个非常简单的数据库,有3列:

身份证件 主题 消息 当我从表中选择id和主题时,JSON数据将正确显示。 当我选择所有内容或单独选择消息时,我只看到一个白色屏幕。 消息列为数据类型文本,应该能够有奇怪的符号/、\、¨、$、%、空格、行等,。。。 获取要显示的消息数据的唯一方法是在连接文件中执行以下操作:

while($r = mysql_fetch_assoc($resultset))
        {

        //$r = preg_replace("!\r?\n!", " ",$r);
        $r= json_encode($r);

            $records[] = $r;

        }

        //Output the data as JSON

        echo json_encode($records);
    }


}

但是,返回的数据充满反斜杠,\r\n并且似乎不是有效的json:

[{"id":"248","subject":"General","message":"Dear Diary\r\n\r\nThis is a test.\r\nDoes it work       or not?!\r\n\r\nGoodbye.\r\n\r\n\r\nD"},{"id":"249","subject":"General","message":"Hi\r\n\r\nThis is Test number 2.\r\nDoes it Work?\r\n\r\n\/\/ goodbye \\\\"}]
如果我清空了我的消息栏,并在没有特殊标志的情况下输入普通文本,那么效果很好,所以我猜这就是问题所在。
但是,如果消息可以包含特殊字符和反斜杠,我会更好,这可能吗?

这些\n和\r是有效的,它们都可以。它们是隐藏的图表绘制者,它们以这种方式存储在数据库中,因此您有2个选项。使用下面的函数清理数据库,或者在将其放入json之前清理该项

function clean($string) {
   $string = str_replace(' ', '-', $string); // Replaces all spaces with hyphens.

   return preg_replace('/[^A-Za-z0-9\-]/', '', $string); // Removes special chars.
}
如果要保留特殊字符,请将其转义

提供导致问题的确切数据。json_encode考虑了它所需要的一切。嗨,zerkms我编辑了我的帖子并添加了我的json输出,虽然只有两行,但这两行都会引起问题。\r\n而且似乎不是有效的json什么让你这么想?@zerkms你是对的,我用json验证器验证了它,它是正确的。谢谢你的回复,这很有意义。像ë、~、ä这样的字符怎么样?无论何时从数据库加载,json_encode都会返回一个白页。我试着设置mysql\u set\u字符集'utf8';就在mysql\u连接之后