一大早刚上班,同事就拿来一个js给我看,说是没法执行,总是报“Expected hexadecimal digit”,代码实现的功能很简单,将从后台取得的一个字符串document.write到页面上,然后再做一些其他处理。
看他的代码里头有类似document.write("/update xxxxx")的代码,隐约记得对于unicode字符,都是使用/u开始的,例如:
document.write("/u6ca1/u6709/u67e5/u8be2/u5230");则输出为“没有查询到”,因此,如果要正常执行问题代码,需要进行转意,使用“//update xxx”的方式进行输出.
我们有必要说一下unicode字符集:
unicode标准是一种固定长度的统一编码方式,目的在于能够是能够用一种编码方式实现各种语言,符号或者是多语言混合的文本的显示,处理,由unicode Consortium定义,目前版本是4.1.0。unicode是通过加"/u"加上一个十六进制的数字构成占两个字节(16位)(/u0000~/uFFFF),它和ASCII码,ISO的10646-1和 UCS-2是兼容的,前128个unicode字符(0~127)对应了ASCII中相应的字符,例如:0x41就是/u0041(字母A),ASCII的128个字母支持拉丁字母,但是unicode的65,000个字符,可以支持更多的语言,unicode从0~255匹配ISO 8859-1(Lation-1)标准.
tobe finished.