你想知道啥?简单说就是电脑上的特殊符号怎么打出来的规则。比如说,每个字母都有自己专属的编码,这种编码叫做Unicode码点,用16进制表示。如果你想在JavaScript中显示这些特殊字符,只需这么做:uXXXX,其中XXXX是四位数的16进制数。
Unicode码点的基本概念
好,你知道Unicode吗?这个东西里面,每个字都有个特别的”身份证号码”,也就是所谓的码点儿。就像字母A,它的码点儿就是0041,写成16进制就是u0041。如果你想学用JavaScript处理字符,那就得先搞懂什么是Unicode码点儿!
JavaScript中的Unicode码点表示法
有时候我们得用JS处理那些带特殊符号的字符串,但有的符号你甚至都看不见也打不出来,这时候就需要用到Unicode码点这个东西了。其实它就是个4位的16进制数字,比如uXXXX这种形式,记住,这个好处大大滴有,既简单明了又易于识别,还方便我们在编程中使用。就像那个笑脸符号,它的Unicode码点是1F600,我们就可以写成uD83DuDE00这样子。
String.charCodeAt()方法
嘿给你介绍一个厉害的javascript技能——String.charCodeAt(),它能告诉你每个字符的Unicode编码,觉得不可思议吗?这个功能对处理常见的Unicode字符特别好用,因为它们的编码都在16位内。你只需要用一个循环遍历字符串,把每个字符的编码转成uXXXX的格式就行了。举个例子,如果你有个字符串叫”Hello”,那你就可以用String.charCodeAt()找到每个字符的编码,再把它们变成16进制显示出来。
String.codePointAt()方法
let str = "hello world"; console.log(str.charCodeAt(0)); // 104,h 的 Unicode 码点是 104
你知道那个String.charCodeAt()吗?其实String.codePointAt()也挺好使的,特别是在遇到那些超16位的Unicode编码时。比如,如果你想展示出那些表情符号或者其他奇怪字符,就要用到它了。具体怎么操作?很简单,就是把每个字符的编码转换成uXXXX这种形式。如果编码超过16位,那就得先拆分成高位和低位,再组合回去。
处理包含特殊字符的字符串
let str = "hello world"; let unicodeStr = ""; for (let i = 0; i < str.length; i++) { // 将每一个字符的 Unicode 码点转换为 4 位的 16 进制数,然后补 0,最后拼接到结果字符串中 unicodeStr += "u" + ("0000" + str.charCodeAt(i).toString(16)).slice(-4); } console.log(unicodeStr); // u0068u0065u006cu006cu006fu0020u0077u006fu0072u006cu0064
敲代码的时候是不是经常碰到带许多特殊符号的字符串啊?像是那些表情啦、数字啊、外语字符啥的。别慌,只需要掌握String.charCodeAt()和String.codePointAt()这两个小技巧,就能轻松处理Unicode码点,让你的字符串看起来更漂亮、更标准,而且还能避免在不同设备或系统上出问题呢!
Unicode码点在国际化开发中的应用
现在全球化太强大了,啥软件都得支持好几种语言!那你可别忘了Unicode!学会它,你的软件就可以全球通用,不管别人说什么语言都不怕。而且,它不光能让文字显示准确,还能搞定排序、搜索和对比这些麻烦事儿。所以,学好Unicode对做国际版软件可是非常有用滴!
let str = "?"; console.log(str.charCodeAt(0)); // 55362,这个码点需要使用 2 个 16 进制数表示,而 charCodeAt() 返回的是第一个 16 进制数的码点 console.log(str.codePointAt(0)); // 134071,codePointAt() 返回整个码点
Unicode码点与字符编码转换
有时候要换编码,比如从UTF-8换成UTF-16,这时候就用到Unicode码点这个好东西了。只要搞清楚每个字符对应的Unicode码点,不管是转码还是传数据都稳如泰山!再也不用担心乱码或数据毁坏了。
Unicode码点的未来发展
let str = "hello ??? world"; let unicodeStr = ""; for (let i = 0; i 0xffff) { i++; // 需要跳过下一个位置 // 将码点的高 16 位和低 16 位分别转换为 4 位的 16 进制,然后拼接到结果字符串中 unicodeStr += "u" + ("0000" + (codePoint >> 16).toString(16)).slice(-4) + "u" + ("0000" + (codePoint & 0xffff).toString(16)).slice(-4); } else { // 将码点转换为 4 位的 16 进制数,然后补 0,最后拼接到结果字符串中 unicodeStr += "u" + ("0000" + codePoint.toString(16)).slice(-4); } } console.log(unicodeStr); // u0068u0065u006cu006cu006fu0020ud842udfb7ud842udfb7ud842udfb7u0020u0077u006fu0072u006cu0064
跟咱们平时用的那些App一样,Unicode也是一直不断更新的。新出的符号跟表情时不时就会出现,所以咱们用的时候可得时刻留心。特别是你要是做程序开发的话,更得时刻关心Unicode的新动态,因为只有这样你的软件才能支持最新版的符号和表情!而且这也能给你带来新的灵感,比如在你的软件里增加更多有趣的字符内容啥的。
这JavaScript里的Unicode码点儿可是挺麻烦的!弄懂了之后,什么特殊符号啦,国际开发,还有字符编码换算,统统不在话下。总的来说,这玩意儿对我们程序员来说就像个好帮手。那你平时编程遇到特殊字符的字符串都是咋处理的?快到评论区分享一下你的妙招,让大家一起学起来,共同进步!
评论0