我知道对于javascript警报,重音字符应该用unicode hex编写(例如š是\ u0161)。
但是如果包含警报的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。
答案 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。)