繁体   English   中英

UTF-8 编码在 JavaScript 中不起作用

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM