[英]UTF-8 encoding not working in JavaScript
我有以下一段代码,部分是从 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
?>
<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>
正如我在评论中提到的,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>
注意: $origadd = "rueFrédéricMistral";
是从保持该值的原始帖子中使用的。
我说字符串需要用引号括起来,否则它会被视为常量。 (有人删除了我作为第一条评论的评论)。
笔记:
使用header('Content-Type: text/html; charset=ISO-8859-1');
而不是header('Content-Type: text/html; charset=UTF-8');
,您的初始 HTML 会向您rueFrédéricMistral
而不是预期的rueFrédéricMistral
。
编辑:
正如 OP 所说,我提到引用它也会起作用。
var source = '<?php echo $origadd; ?>';
根据我上面的评论。
如果你使用
var source = '<?php echo $origadd; ?>';
var source = '<?php echo $origadd; ?>';
作为我的例子并引用它(你没有做的事情),你会看到你的数据在那里。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.