array('Coffee','Cappuccino','Café');
我应该补充说,它来自数据库的数组将是:
array('Coffee','Café');
但JSON编码为:
["coffee","cappuccino",null];
如果我通过print_r()打印这些文件,它们会在UTF-8编码的网页上显示出来,但如果要使用print_r($array)查看数组,则使用“café” ;出口();.
如果我在编码JSON之前使用utf8_encode()进行编码,那么它会很好,但在网页上打印的内容是“café”而不是“café”.
也很奇怪,但是json_last_error()被看作是一个未定义的函数,但json_decode()和json_encode()可以正常工作.
关于如何从数据库中获取UTF-8编码数据的任何想法在整个过程中表现相同?
private function get_keywords() { global $db,$json; $output = array(); $db->query("SELECT keywords FROM listings"); while ($r = $db->get_array()) { $split = explode(",",$r['keywords']); foreach ($split as $s) { $s = trim($s); if ($s != "" && !in_array($s,$output)) $output[] = strtolower($s); } } $json->echo_json($output); }
json :: echo_json方法只是编码,设置标题并打印它(用于Prototype)
编辑:数据库连接方式:
function connect() { if ($this->set['sql_connect']) { $this->connection = @MysqL_connect( $this->set['sql_host'],$this->set['sql_user'],$this->set['sql_pass']) OR $this->debug( "Connection Error",MysqL_errno() .": ". MysqL_error()); $this->db = @MysqL_select_db( $this->set['sql_name'],$this->connection) OR $this->debug( "Database Error","Cannot Select Database '". $this->set['sql_name'] ."'"); $this->is_connected = TRUE; } return TRUE; }
更多更新:
简单的PHP脚本我跑了:
echo json_encode( array("Café") ); // ["Caf\u00e9"] echo json_encode( array("Café") ); // null