js html utf8编码转换,js中的UTF-8编码与解码
讲解之前我们先了解一些基本概念,什么是字符集?字符集就像一张表,这个表里面有很多的符号,每个符号都可以通过下标(这个符号在表的中的序号)对应到,有点类似js中的map,例如97这个下标代表的就是符号a。当然,字符集是有很多种,最常见的就是ASCII字符集了,还有中文的GB2312字符集,每个字符集其实就是一张表,上面有各种符号,然后通过下标和它们对应。当然,最全的,包含所有符号的字符集是Unicode,今天讲的字符都是基于Unicode字符集的。
有了字符集,我们就可以利用下标去对应符号了,但是一个字符集中有很多的字符,这样有些下标就会很长了,如14324,17423等,因此要对这些下标进行编码来节省空间,编码方式有utf-8,utf-16和Unicode编码等。
在js中,最常见的就是Unicode编码了(注意:Unicode字符集和Unicode编码是两个不同的概念),第一种情况,它以\x开头,后面加上两个十六进制表示单字节字符,如'\x61'表示的就是字符a,怎么来的呢,因为十六进制的61代表十进制的97,而97下标代表的就是a符号;第二种情况,它以\u开头,后面加4个十六进制表示一个字符,例如'\u0061',这个表示的也是字符a,和\x不同,\u每次利用两个字节表示一个字符(一个字节表示可以表示两个十六进制),\x则使用一个字节,因此\x只能表示255个符号,而\u可以表示65535个字符。
因此有的时候我们会遇到如何识别单字节和双字节的问题,我们就可以利用\x或者\u来判断:
/*测试是否是单字节*/
/[\u0000-\u00ff]/g.test(str);
/[\x00-\xff]/g.test(str);
/*测试是否是双字节*/
/[\u0100-\uffff]/g.test(str)
测试是否是单/双字节,主要看字符的序号是否大于255,如果大于255,那么一个字节就存不下了,因为一个字节8位,最多放序号位255的字符。
当然,在js中,除了Unicode编码,还有一种八进制的转义字符,如'\141'表示的也是字符a,注意,和上面不同,这里用的是八进制,因为141的八进制代表的是十进制的97,所以取的是下标为97的符号。需要注意的是,它只能表示255个符号,最大为'\377',同时注意例如'\128'表示的是两个字符,第一个为八进制转移字符:'\12',另一位为'8',因为八进制里面最大的是7,没有8。
除了在js中存在这种编码方式,在html和css中也是存在的。在html中,+十进制+;可以表示一个符号,例如a表示的就是符号a,或者+十六进制+;也可以表示,如a表示的也是a,只不过一个用的是下标的十进制一个是十六进制。注意,因为html的这种隐藏编码方式,会导致我们有的时候踩到坑, &符号的分割拼接陷阱
在css中,主要是提现在伪元素后面的content中,例如:
#a:after{
content:'\61'
}
这里的content其实是符号a,在css里中,\后面加上下标的十六进制即可表示这个字符。
为了方便大家如何查编码,进制转换,总结了一些常用的获取以及转换的方法:
/*符号和下标转换*/
'a'.charCodeAt(0);//获取符号的下标数字
String.fromCharCode(97);///通过下标,找到这个字符
/*十进制变其他进制*/
97 .toString(16);//十进制变成十六进制
97 .toString(8);//十进制变成八进制
97 .toString(2);//十进制变成二进制
/*其他进制变十进制*/
parseInt(61,16);//十六进制变十进制
parseInt(141,8);//八进制变十进制
parseInt(1100001,2);//二进制变十进制
上面讲了字符中的一些基本知识,在字符集中还有两个特殊的东西,一个是中文,一个是emoji。
中文在Unicode字符集中的分布比较广泛:
上图只是一部分分布,但是主要的中文集中在\u4e00-\u9fa5之间,因此有的时候会遇到验证是否存在中文:
[\u4e00-\u9fa5]/g.test(str);
注意啊,上面只是验证绝大多数的中文,不是完整的验证,例如中文中的"
js html utf8编码转换,js中的UTF-8编码与解码相关推荐
- html unicode编码转换,JS实现的Unicode编码转换操作示例
本文实例讲述了JS实现的Unicode编码转换操作.分享给大家供大家参考,具体如下: Unicode编码转换 /* *js Unicode编码转换 */ var decToHex = function ...
- linux ubuntu编码转换,Ubuntu中的文件编码转换
find default -type d -exec mkdir -p utf/{} \; find default -type f -exec iconv -f GBK -t UTF-8 {} -o ...
- ios html 编码转换,IOS中编码转换方法(转)
IOS开发中编码转换方法是本文要介绍的内容,主要是来学习一下编码转换的内容,不多说,直接来看详细内容.我们可以使用以下方法进行编码转换.NSString*str2= [NSString stringW ...
- 如何获取bainu文档并用斡仑office进行编码转换-永中office蒙文版
声明: 1.bainu软件是由内蒙古卓嘎信息技术有限公司研发的. 2.斡仑office是由内蒙古斡仑科技有限公司与永中软件股份有限公司联合开发的蒙汉多文种跨平台办公套装. 第一,首先我们打开bainu ...
- 1、代码中设置编码、编辑器中设置Python的编码
1Python中文编码 1.1代码中设置编码 Python中默认的编码格式是ASCII格式,在没有修改编码格式时无法正确打印汉字,所以在读取中文的时候会报错. 解决办法为只要在文件开头加入 # -- ...
- mac上编码转换工具_25个用于高效编码的Mac工具
mac上编码转换工具 by freeCodeCamp 通过freeCodeCamp 25个用于高效编码的Mac工具 (25 Mac Tools for Productive Coding) 1.现代浏 ...
- java万能编码转换_分享万能java字符串编码转换工具类
package com.zuidaima.util; import java.io.UnsupportedEncodingException; /** * 转换字符串的编码 */ public cla ...
- java万能编码转换_Java中的编码转换
慕桂英3389331 CharsetDecoder 应该是您要寻找的东西,不是吗?许多网络协议和文件使用面向字节的字符集(例如ISO-8859-1(ISO-Latin-1))存储其字符.但是,Java ...
- 单片机中UTF-8如何转换得到GBK编码
概述 我们在单片机开发中常会遇到需要将UTF-8转换为GBK编码的需求. 在我们了解各种编码格式的情况下可知, UFT-8不能直接转成GBK,需中转成unicode再转换为gbk.而unicode和g ...
最新文章
- apache workprefork
- 设计sample语言的词法分析器_重现木兰编程语言(十)——比较、循环,一个语法设计特色
- Tracer Druid 记录sql 以及参数
- 计算机应用基础测试成绩截图,计算机应用基础测试题图文稿.docx
- WinSock服务程序
- TortoiseSVN使用帮助和下载
- Android Log
- 迭代子模式(Iterator)
- 初学iBATIS的朋友,如果你不看我这篇文章,你一定后悔,因为它官方文档里面的示例少一个
- 以流动债务为例论指标的合理使用
- Python开发工程师常用开发工具
- 14个非常有用的jquery技巧,注意事项和最佳实践
- html修改字体宋体,html怎么设置宋体
- DaVinci:Camera Raw
- 第二届翼支付杯大数据建模大赛-信用风险用户识别Baseline 线上0.65+稳进复赛
- C语言中*p++ ,(*p)++ ,*++p ,++*p的区别
- plot_2d_separator
- NDIS笔记---(2)
- 别忘记 DNS 服务器的安全性
- “优必选“杯2021中国机器人技能大赛--赛后总结
热门文章
- html百度地图秘钥,自己网页调用百度地图API 附API密钥
- Maven 私服 Version policy mismatch, cannot upload SNAPSHOT content to RELEASE repositories for file‘0’
- 语言 micropython_【雕爷学编程】MicroPython动手做(03)——零基础学MaixPy之开机测试...
- python小测验3_python基础小测试
- esxi6.0开启网络UI管理界面
- java 下载管理_Java多线程文件下载管理器详解
- rabbitmq direct 多个消费者_RabbitMQ从零开始
- mysql语句命令_MySQL语句和命令大全
- apache-maven仓库配置
- 教师排课程序设计c语言,计算中心