在将会话变量转换为 javascript 变量时丢失特殊字符


Loss special characters while converting session var to javascript var

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

数组示例:圣蒂特,QC圣埃米尔,QC圣阿黛尔,QC圣阿加特德蒙,QC

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

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

数组现在看起来像这样:圣蒂特,QC零零圣阿加特德蒙,QC

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

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;
}