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