内联javascript中的口音

时间:2014-08-04 15:16:21

标签: javascript unicode utf-8

我知道对于javascript警报,重音字符应该用unicode hex编写(例如š是\ u016​​1)。

但是如果包含警报的javascript函数在html文档中内联,具有UTF-8编码呢?我还应该在unicode hex中编写重音字符吗?

示例:

<!DOCTYPE html>
<html lang="ro">
<head>
<meta charset="UTF-8">

</head><body>

<script type="text/javascript">
window.onload=error_alert();function error_alert(){alert('A apărut o eroare!')}
</script>

</body></html>

像这样写字符“ă”是否安全,或者我应该使用\ u0103?请记住,元字符集已经定义为UTF-8。

1 个答案:

答案 0 :(得分:2)

是的,您仍然可以使用escape sequences in JavaScript strings,即使它们在HTML中内联。

  

像这样写字符“ă”是否安全,或者我应该使用\ u0103?请记住,元字符集已经定义为UTF-8。

这取决于。如果您确定HTML文档包含<meta charset=utf-8>并且将始终这样做,或者如果服务器发送Content-Type: text/html;charset=utf-8 HTTP标头并且您确定它将始终这样做,那么无论如何,使用原始符号而不转义它们。

但是有一个问题 - 这些东西并不总是在你的控制之下。访问者可能在代理之后,剥离或破坏HTTP标头或修改HTML响应的编码。

在任何情况下,最安全的做法是对任何非ASCII字符使用转义序列,因为整个源代码只包含ASCII字符。 (您可以将HTML character references用于文档的HTML部分,将CSS escape sequences用于CSS。)