UTF-8编码在JavaScript中不起作用
我有以下一段代码,部分是从SO中的另一个线程获得的:UTF-8编码在JavaScript中不起作用,javascript,php,json,html,Javascript,Php,Json,Html,我有以下一段代码,部分是从SO中的另一个线程获得的: <?php header('Content-Type: text/html; charset=ISO-8859-1'); $origadd = $_SESSION["OriginAdd"] // $_SESSION["OriginAdd"] has a value "rueFrédéricMistral"; echo $origadd; // This displays rueFrédéricMistral ?> <h
<?php
header('Content-Type: text/html; charset=ISO-8859-1');
$origadd = $_SESSION["OriginAdd"] // $_SESSION["OriginAdd"] has a value "rueFrédéricMistral";
echo $origadd; // This displays rueFrédéricMistral
?>
<html>
<head>
<meta charset="utf-8">
<script type="text/javascript">
var source = <?php echo json_encode($origadd); ?>;
alert(source); // This displays null
</script>
</head>
....
....
</html>
var源=;
警报(来源);//这将显示空值
....
....
正如我在评论中提到的,echo语句为我提供了原始字符串。但是,JS中的警报框给了我一个空值,因此后续代码失败。这里的问题是编码问题,重音在这里起了主要作用。例如,如果字符串只是“abc”,它会正确地提醒它。如果您希望两种内容都能正确显示,则所有内容都需要UTF-8 因此,您需要将文件的编码更改为UTF-8,并将头设置为UTF-8 这一点得到了成功的验证
<?php
header('Content-Type: text/html; charset=UTF-8');
$origadd = "rueFrédéricMistral";
echo $origadd; // This displays rueFrédéricMistral
?>
<script type="text/javascript">
var source = <?php echo json_encode($origadd); ?>;
alert(source);
</script>
var源=;
警报(来源);
注:$origadd=“rueFrédéricMistral”代码>是从持有该值的原始帖子中使用的
我说过字符串需要用引号括起来,否则它会被当作常量。(有人删除了我的第一条评论)
注:
使用标题('Content-Type:text/html;charset=ISO-8859-1')
而不是标题('Content-Type:text/html;charset=UTF-8')
,您的初始HTML将显示rueFrédéricMistral
,而不是预期的rueFrédéricMistral
编辑:
正如OP所说,我引用它也会起作用
var-source=''代码>
根据
如果使用var source=''代码>作为我的示例并引用它(您没有做的事情),您将看到您的数据就在那里
我重新打开了它,但你不能像那样使用json\u encode
。如果使用var source=''代码>作为我的示例并引用它(您没有做的事情),您将看到您的数据就在那里。网上有很多这样的例子。其中一个,请参见和@Fred ii-为什么不能像那样使用json\u编码
?实际上,这是在这种情况下使用它的首选方法。@Neeraj向我们展示了由此生成的实际HTML,特别是var source=…
行的确切外观。还向我们展示了如何使用echo bin2hex($origadd)
@deceze我的错误对该字符串进行精确编码