簡體   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