2015-10-16 33 views
0

我的數據庫有一個包含一分錢符號結果 - ¢PHP,JSON - 逃生百分號多

我似乎無法弄清楚如何逃脫它,因此值在JSON提要顯示出來。現在它返回的是NULL。我如何逃避像這樣的所有符號。

陣列被這樣

if(mysql_num_rows($result)) { 
    while($post = mysql_fetch_assoc($result)) { 
     $posts[] = array('post'=>$post); 
    } 
} 

與此

if($format == 'json') { 
    header('Content-type: application/json'); 
    if(isset($_GET['post_id'])) { 
     echo json_encode(array('posts'=>$posts)); 
    } else { 
     echo json_encode(array('posts'=>$posts, 'pagenum'=>$nexturl)); 
    } 
} 

伊夫一直停留在此產生的輸出創建的。

謝謝

---這些是我的UTF選項。我選擇哪一個?

my utf options

+0

'$ post'必須是一個utf-8字符串 – Federkun

+0

或者在這種情況下,是一個utf-8字符串數組。用於#3的 – GolezTrol

回答

1

使用UTF-8將清除這件事。

1.)將db字段排序規則設置爲UTF-8。 2.)將PHP文件中的標題設置爲UTF-8 header('Content-type:text/html; charset = utf-8');

3.)確保您的文本編輯器正在輸出UTF-8 w/o BOM。 (因爲這個,我已經失去了幾天的生活)

+0

。什麼是BOM? – vitalyp

+1

[字節順序標記](https://en.wikipedia.org/wiki/Byte_order_mark)。 – GolezTrol

1

JSON應該是UTF-8,所以$ posts應該是UTF-8。

您可以結合array_mapiconv

$posts = array_map(
      function($a){ 
      return iconv('ISO-8859-1', 'UTF-8"', $a); 
      }, 
      $posts); 

如果您有可能將數據庫轉換爲UTF-8,那更好。

+0

我添加了我的utf選項的截圖。我選擇哪一個?該選項是否僅適用於該字段或整個表格? – vitalyp

+1

ut8-bin應該沒問題,但其他人也應該工作。您可以將其應用於整個數據庫,但這可能會對您只能從該領域開始產生重大影響。我認爲你應該[設置客戶端字符集](http://php.net/manual/en/function.mysql-set-charset.php)。 – GolezTrol

+1

所以把這個mysql_set_charset('utf8',$ link);完全使它工作。 – vitalyp