Javascript中的string类型使用UTF-16编码

这篇博客探讨了JavaScript中string类型使用UTF-16编码的原因和特点。文章详细介绍了Unicode编码、UTF-8与UTF-16的差异,包括它们各自的优缺点。UTF-16虽然在某些操作中效率高,但存在字节序问题,而UTF-8虽然变长编码带来一些效率问题,但其兼容性和容错性更强。博客还讨论了在实际应用中如何选择合适的编码方式。
摘要由CSDN通过智能技术生成

在JavaScript中,所有的string类型(或者被称为DOMString)都是使用UTF-16编码的。

DOMString 是一个UTF-16字符串。由于JavaScript已经使用了这样的字符串,所以DOMString 直接映射到 一个String

将 null传递给接受DOMString的方法或参数时通常会把其stringifies为“null”。

引出的Unicode中UTF-8与UTF-16编码的详细了解

Unicode编码

Unicode(统一码、万国码、单一码)是计算机科学领域里的一项业界标准,包括字符集、编码方案等。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。1990年开始研发,1994年正式公布。

通常Unicode编码是通过2 Byte来表示一个字符的,如U+A12B,2 Byte的二进制表示方法结果就是1010(A)0001(1) 0010(2)1011(B)

需要注意的是:UTF是Unicode TransferFormat的缩写,UTF-8和UTF-16都是把Unicode码转换成程序数据的一种编码方式。

UTF-8

UTF-8(8-bit Unicode Transformation Format)是一种针对Unicode的可变长度字符编码,又称万国码。由Ken Thompson于1992年创建。现在已经标准化为RFC 3629。UTF-8用1到6个字节编码Unicode字符(尽管如此,2003年11月UTF-8被RFC 3629重新规范,只能使用原来Unicode定义的区域,U+0000到U+10FFFF,也就是说最多4个字节)。用在网页上可以统一页面显示中文简体繁体及其它语言(如英文,日文,韩文)。

UTF-8的来历

UTF-8的规范里充斥着这样神秘的句子:“第一个位元组由110开始,接着的位元组由10开始”,“第一个位元组由1110开始,接着的位元组由10开始”。

那么这到底是什么意思呢?为什么要这么做呢?

我们先从二进制说起。我们都知道,一个字节是由8个二进制位构成的,最小就是0000 0000,最大就是1111 1111。那么一个字节所能表示的最多字符数就是28次方,也就是256。对于26个英文字母来说

  • 26
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
小程序字符串转换成UTF-8编码是很常见的需求。UTF-8是一种用于跨平台使用的Unicode字符编码,通过将文字符转成UTF-8编码,可以让应用程序在各种不同的操作系统和设备上正常运行。以下是一种简单的将字符串转换成UTF-8编码的方法: 首先,需要将字符串转换成数组,可以使用JavaScript的split()方法,将字符串按照字符拆分成数组。例如: var str = "这是一个测试字符串"; var arr = str.split(''); 然后,需要将数组每个字符的Unicode值转换成UTF-8编码UTF-8编码的规则是,对于一个Unicode值,如果它小于等于127,则直接用一个字节表示,否则需要用2到4个字节表示。具体的规则可以参考UTF-8编码表。 因此,可以使用JavaScript的charCodeAt()方法获取每个字符的Unicode值,然后根据其值转换成相应的UTF-8编码。例如: var utf8Arr = []; for(var i=0; i<arr.length; i++){ var code = arr[i].charCodeAt(); if(code <= 127){ utf8Arr.push(code); }else if(code <= 2047){ utf8Arr.push((code >> 6) | 192); utf8Arr.push((code & 63) | 128); }else{ utf8Arr.push((code >> 12) | 224); utf8Arr.push(((code >> 6) & 63) | 128); utf8Arr.push((code & 63) | 128); } } 最后,将转换后的UTF-8编码数组转换成字符串即可。可以使用JavaScript的fromCharCode()方法将每个字节值转换成对应的字符,然后通过join()方法将字符数组拼接成字符串。例如: var utf8Str = String.fromCharCode.apply(null, utf8Arr); console.log(utf8Str); 这样就可以将字符串转换成UTF-8编码了。需要注意的是,JavaScript字符串本身已经是以UTF-16编码存储的,因此如果只是在小程序内部使用字符串,不需要进行UTF-8编码转换。只有在需要将字符串传给其他平台或系统时,才需要进行转换。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

iKF无线耳机

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值