将会话var转换为javascript var时丢失特殊字符

时间:2013-09-28 19:52:23

标签: javascript php

我将包含城市名称的数组放入会话变量中。

数组示例: 圣特罗,QC Saint-Émile,QC Sainte-Adèle,QC Sainte-Agathe-des-Monts,QC

当我将此会话变量数组转换为javascript数组时

var availableTags = <?php echo json_encode($_SESSION['villeDB']) ?>;

现在这个数组看起来像这样: 圣特罗,QC 空值 空值 Sainte-Agathe-des-Monts,QC

如何在转换我的城市数组名称时保留特殊字符?

1 个答案:

答案 0 :(得分:0)

json_encode要求字符串以UTF8编码。

就个人而言,我喜欢用单字节字符集编程。一般来说,这不是一件令人头痛的问题。但在这种情况下,我有一个辅助函数:

function json_output($json) {
  if( is_array($json))
    array_walk_recursive($json,function(&$a) {if(is_string($a)) $a=utf8_encode($a);});
  elseif( is_string($json))
    $json = utf8_encode($json);
  $j = json_encode($json,true);
  return $j;
}