在涉及Web前端开发时, 有时会遇到\uXXXX格式表示的字符,  其中XXXX是16进制数字的字符串表示形式,  在js中这个叫Unicode转义字符, 和\n \r同属于转义字符.  在其他语言中也有类似的, 可能还有其它变形的格式.

多数时候遇到需要解码的情况多点, 所以会先介绍解码decode, 后介绍编码encode.

下文会提供Javascript C# Java三种语言下不同方法的实现和简单说明, 会涉及到正则和位运算的典型用法.

Javascript的实现

解码的实现

1
2
3
function decode(s) {     return unescape(s.replace(/\\(u[0-9a-fA-F]{4})/gm, '%$1')); }

unescape是用来处理%uXXXX这样格式的字符串,  将\uXXXX替换成%uXXXXunescape就可以处理了.

编码的实现

1
2
3
4
5
function encode1(s) {     return escape(s).replace(/%(u[0-9A-F]{4})|(%[0-9A-F]{2})/gm, function($0, $1, $2) {         return $1 && '\\' + $1.toLowerCase() || unescape($2);     }); }

和解码中相对应, 使用escape编码,  然后将%uXXXX替换为\uXXXX,  因为escape还可能把一些字符编码成%XX的格式,  所以这些字符还需要使用unescape还原回来.

escape编码结果%uXXXX中的XXXX是大写的,  所以后面的replace只处理大写的A-F.

另一种编码的实现

不使用正则和escape

1
2
3
4
5
6 7 8 9 10 11 12 13 14 
function encode2(s) {     var i, c, ret = [],         pad = '000';     for (i = 0; i < s.length; i++) {         c = s.charCodeAt(i);         if (c > 256) {             c = c.toString(16);             ret[i] = '\\u' + pad.substr(0, 4 - c.length) + c;         } else {             ret[i] =

转载于:https://www.cnblogs.com/seesea125/articles/4112945.html

Unicode转义(\uXXXX)的编码和解码相关推荐

  1. JS实现Html转义和反转义(html编码和解码)的方法总结

    1.JS实现html转义和反转义主要有两种方式: 1).利用用浏览器内部转换器实现html转义: 2).用正则表达式实现html转义: 2.封装的JS工具类: var HtmlUtil = {/*1. ...

  2. Python中使用Unicode对中文进行编码和解码

    编码: str = 'Python才是世界上最好的语言'.encode('unicode_escape') print(str) 输出结果: b'Python\\u624d\\u662f\\u4e16 ...

  3. RapidJSON 代码剖析(三):Unicode 的编码与解码

    根据 RFC-7159: 8.1 Character Encoding JSON text SHALL be encoded in UTF-8, UTF-16, or UTF-32. The defa ...

  4. 【转】python 字符编码与解码——unicode、str和中文:UnicodeDecodeError: 'ascii' codec can't decode...

    原文网址:http://blog.csdn.net/trochiluses/article/details/16825269 摘要:在进行python脚本的编写时,如果我们用python来处理网页数据 ...

  5. C#编码格式转换,Url,escape,unicode编码和解码

    数据操作时,设计的各种类型的编码和解码方法 1 转换escape编码,解码Escape /// <summary>/// 转换escape编码/// </summary>/// ...

  6. html转义字符解码,js对html转义和反转义以及编码和解码

    在项目开辟过程当中,我会有时候赶上如许的一个营业需求:对从数据库中读取出来的html数据举行反转义,才在当前网页当前举行衬着. 或许另一个需求,对编辑器中的文本举行编码再传进数据库,或许从库中读取的数 ...

  7. js对html转义和反转义以及编码和解码

    js对html转义和反转义以及编码和解码 在项目开发过程中,我会有时候遇上这样的一个业务需求:对从数据库中读取出来的html数据进行反转义,才能在当前网页当前进行渲染. 或者另一个需求,对编辑器中的文 ...

  8. python编码和解码_Python中的编码与解码(转)

    Python中的字符编码与解码困扰了我很久了,一直没有认真整理过,这次下静下心来整理了一下我对方面知识的理解. 文章中对有些知识没有做深入的探讨,一是我自己也没有去深入的了解,例如各种编码方案的实现方 ...

  9. 不要小看它——编码与解码

    前言 说说我为什么要写关于编码的一篇博文?有两个原因 1.艺龙的面试面试官问到了,让我知道了你想扩展的你的基础,你不能放弃任意一个知识点 2.就是今天做业务碰到了这个bug,肯定有人想知道,这个会产生 ...

最新文章

  1. C++对象模型1——类对象的sizeof、static成员、对象模型、this指针
  2. 【Android 组件化】路由组件 ( 路由组件结构 )
  3. 安全篇:弱密码python检测工具
  4. java象棋人机代码_中国象棋人机对弈Java版源码
  5. 【小白学习PyTorch教程】十五、BERT:通过PyTorch来创建一个文本分类的Bert模型
  6. adb命令中的keyevent事件
  7. asr1601芯片平台实现ssl加密的websocket
  8. Redis主从读写分离配置
  9. 【算法大赛直播周】隐私保护与精准营销亦能兼得,“联邦广告”如何打破数据孤岛?
  10. 活动目录系列之十二:活动目录的修复(下)
  11. GENTLE.NET快速上手
  12. h3csnmp管理命令_华为H3C交换机SNMP配置命令
  13. 计算机学院主管学生日常工作的是,学生会的年度计划书(网络版)doc(完整版)...
  14. 随手写了一段C++访问LDAP, 并且获取sid的代码
  15. 【因缘际会】知乎APP的简单的产品体验报告
  16. packetfence 7.2网络准入部署2
  17. 计算机组装图纸手画,原神玩家为造家园能有多拼?工科大佬直接画出图纸,成品效果惊人...
  18. Android P指示灯调节代码逻辑
  19. 记一次过掉rar未注册版,总是弹出一个烦人的网页对话框的实践
  20. 实验3-5 查询水果价格

热门文章

  1. 手写java_手写JAVA虚拟机(二)——实现java命令行
  2. python规则网格插值_Python中规则网格上的插值
  3. mysql乐观锁处理超卖_通过乐观锁解决库存超卖的问题
  4. 如何用C语言改变宏定义的大小,C语言中宏定义使用的小细节
  5. java模拟使用接口,关于java:模拟一个类与模拟它的接口
  6. layui一个表格中怎么接两个接口的值_layer学习笔记之table表格引入数据实现分页...
  7. mysql注册数据库_基于mysql数据库的注册
  8. Python可视化——3D绘图解决方案pyecharts、matplotlib、openpyxl
  9. 卷积神经网络基础:(7)经典的网络架构
  10. 咕泡学院:(1)唐宇迪python课程作业