所有分类
  • 所有分类
  • 后端开发
JavaScript 中 Unicode 码点的表示与转换方法

JavaScript 中 Unicode 码点的表示与转换方法

是计算机科学中用于字符编码的标准之一,它定义了用数字表示字符的方法。中,每一个字符都有一个对应的数字。进制表示。码点。码点。中提供了一些内置方法来完成这个任务。码点。登录后复制登录后复制码点。登录后复制码点,则可以按照类似上面的方式进行遍历

你想知道啥?简单说就是电脑上的特殊符号怎么打出来的规则。比如说,每个字母都有自己专属的编码,这种编码叫做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位,那就得先拆分成高位和低位,再组合回去。

处理包含特殊字符的字符串

JavaScript 中 Unicode 码点的表示与转换方法

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码点儿可是挺麻烦的!弄懂了之后,什么特殊符号啦,国际开发,还有字符编码换算,统统不在话下。总的来说,这玩意儿对我们程序员来说就像个好帮手。那你平时编程遇到特殊字符的字符串都是咋处理的?快到评论区分享一下你的妙招,让大家一起学起来,共同进步!

原文链接:https://www.icz.com/technicalinformation/web/vue2/2024/07/19855.html,转载请注明出处~~~
0

评论0

请先
注意:请收藏好网址www.icz.com,防止失联!站内免费资源持续上传中…!赞助我们
显示验证码
没有账号?注册  忘记密码?