我目前正在使用Visual Studio社区并学习Javascript / html5。我遇到了一个问题,我试图使用javascript将ASCII代码存储在变量中,但是,当我尝试显示它时,它会显示实际的代码而不是预期的字符。
<script type="text/javascript">
x = "幫";
function ranAlert(){
alert(x);
}
</script>
<form>
<input type="button" value="me" onclick="ranAlert()" />
</form>
当我点击按钮“&amp;#24171”时,此处的输出将显示。但是如何让它显示实际的预期角色“帮”?
答案 0 :(得分:4)
对于您的角色,您需要使用JavaScript表示法而不是HTML,因为您不会将该字符串用于任何HTML标记;您只需将其传递给alert()
:
alert("\u5e6b");
JavaScript表示法使用十六进制,因此您需要将24171转换为十六进制表示法。您可以在浏览器控制台中执行此操作:
(24171).toString(16)
给出5e6b
。
由于这个字符可以用UTF-16表示,处理问题的一种更简单的方法就是直接在字符串中使用字符:
alert("幫");
对于某些Unicode代码点,JavaScript中的表示需要JavaScript字符的对,因为JavaScript字符串使用UTF-16编码,而某些字符需要超过16位才能表示。非常有用的网站FileFormat.org拥有Unicode资源,包括几种流行语言(包括JavaScript)中每个角色的即用型表示。
如果你想在CSS中使用那个代码点,比如说content:
属性的值,你会略有不同的转义。 CSS编码方案允许6个十六进制数值:
.my-glyph { content: "\005E6B"; }
最后请注意使用术语&#34;字符&#34;并不完全准确,因为Unicode反映了许多书写系统涉及由几个部分组成的字形这一事实。我对术语一般不是很严格,所以不要效法我的榜样;重要的是要记住,看起来像一个单一的字形(字母用户称之为&#34;字符&#34;)实际上可能由几个单独的代码点组成。