javascript &#x开头,&#开头,\x开头,%开头 转中文

2023-05-16

目录

  • 关于:js提供的函数
  • 1、js编码有关函数
    • 1.1 unicode编码
    • 1.2 utf-8编码
    • 1.3 进制方法
    • 1.4 编码方法
    • 1.4 补充
  • 2、中文 和 &#x 互转
    • 2.1 中文 转 &#x
    • 2.2 &#x 转中文
  • 3、中文和 &# 互转
    • 3.1 中文转 &#
    • 3.2 &# 转 中文
  • 4 中文 和 \x 互转
    • 4.1 中文 转 \x
    • 4.2 \x 转 中文
  • 5、中文和unicode 互转
    • 5.1 中文转unicode
    • 5.2 unicode转中文

tips:𣇉 是两个unicode “\uD84C\uDDC9”

关于:js提供的函数

js默认是按照unicode来编码中文的,比如

String.fromCharCode(55372)+String.fromCharCode(56777) =>“𣇉” //自动组合unicode

var a="\u4e2d\u6587" => 中文 //自动识别,a就是中文

var x="\xE4\xB8\xAD\xE6\x96\x87"; =>“中文” //js自动识别\x后默认按unicode组合,所以乱码,因为是utf8的字节

​ var m="%"+x.charCodeAt().toString(16)+"%"+x.charCodeAt(1).toString(16)+"%"+x.charCodeAt(2).toString(16);

​ decodeURI(m)=>“中” 结果出来 按照utf8来解码

1、unicode编码
	// 说明\x只能js中识别
     escape("\x61")=>"a"   \x十六进制,ascii范围是输出ascii字符
     escape("中文")=> "%u4E2D%u6587"  则输出中文的unicode码 
  unicode 转中文
     //说明:fromCharCode的参数是unicode码
     unescape("%u4E2D%u6587")=> "中文"  
     String.fromCharCode(0x4e2d) =>"中"  单个unicode转中文
     String.fromCharCode(55372,56777) =>"𣇉"  多个unicode转中文
	 String.fromCharCode(97)=> "a"
	  
   js默认是按照  
2、取码值
    "中".charCodeAt(0)=>20013  中文则是unicode十进制 码值
    "a".charCodeAt()=>97   字符的ascii码值 

3、utf-8编码
	编码
        encodeURI方法不会对下列字符编码 ASCII字母 数字 ~!@#$&*()=:/,;?+'
        encodeURIComponent方法不会对下列字符编码 ASCII字母 数字 ~!*()'

        encodeURI("a") => "a"
        encodeURI("中文") => "%E4%B8%AD%E6%96%87"  utf8字节编码
        encodeURI("𣇉") => "%F0%A3%87%89"   占4字节utf8
	
	解码
		decodeURI("%e4%b8%ad") =>"中"   //会按照utf字节格式识别来编码
	
4、html编码
   如下形式在网页中会自动编码,同 &>等类似
     中文 //中文    &#x后跟unicode的十进制数
     �� // 𣇉	    &# 后跟unicode的十六进制数
 
5、utf8-unicode->中文 
 
 

1、js编码有关函数

1.1 unicode编码

escape("中文") => "%u4E2D%u6587"

	"中".charCodeAt(0).toString(16) =>"4e2d"

	"文".charCodeAt().toString(16) =>"6587"
	String.fromCharCode(0x4e2d) =>"中"


String.fromCharCode(55372,56777) =>"𣇉" =>escape("𣇉")=>"%uD84C%uDDC9" =>"\uD84C\uDDC9"
   用两个unicode表示一个汉字 “𣇉”

1.2 utf-8编码

encodeURI("中文") => "%E4%B8%AD%E6%96%87"

1.3 进制方法

Number("0xE4") => 228=>0xE4

Number(228).toString(16) => "e4"

escape("\x61") => "a"

    "a".charCodeAt(0) => 97

    "a".charCodeAt(0).toString(16) => "61"

1.4 编码方法

//escape是进行unicode编码
escape("&") => %26 
unescape("%26123") -> &123

escape("确")->"%u786E"
unescape(%u786E) ->//encodeURI(Component)是对地址编码以便兼容所有浏览器ascii模式
encodeURI方法不会对下列字符编码 ASCII字母 数字 ~!@#$&*()=:/,;?+'
encodeURIComponent方法不会对下列字符编码 ASCII字母 数字 ~!*()'


//适合url地址
//编码后地址可识别
encodeURI("https://blog.csdn.net/hvang1988?a =&")
	=>"https://blog.csdn.net/hvang1988?a%20=&";


//适合参数编码	
//因为编码后不影响地址
encodeURIComponent("https://blog.csdn.net/hvang1988?a =&")
	=>"https%3A%2F%2Fblog.csdn.net%2Fhvang1988%3Fa%20%3D%26"
 //举例如下:
    var a=encodeURI("a=b");
    // 编码后会影响地址解析
    console.log(a) //a=b  
    a=encodeURIComponent("a=b");
    //编码后不影响地址,所以适合对参数编码然后附加到地址中
    // https://blog.csdn.net/hvang1988?p=a%3Db  这种才是后台需要的
    console.log(a); //a%3Db

1.4 补充

&#后跟unicode 十进制
&#x 后跟的是unicode 十六进制
% 后跟16进制 比如escape("&") 为%26  而&的ascii为36

2、中文 和 &#x 互转

中文 在html标签中会自动编码为汉字,和 类似

2.1 中文 转 &#x

过程:

 中文=>escape("中文") => "%u4E2D%u6587"  =>

   把%u替换成 &#x即可 ,因为后边跟的都是十六进制=> "中文"

js实现:

function code(str) {
    var result = "";
    for (var i = 0; i < str.length; i++) {
        result += "&#x" + str.charCodeAt(i).toString(16)+";";
    }
    return result;
}

//测试
console.log(code("中文")); //&#x4e2d;&#x6587;

2.2 &#x 转中文

过程:

  &#x4E2D&#x6587 => &#x替换为%u =>

  %u4E2D%u6587 =>unescape("%u4E2D%u6587") =>中文

js实现:

var str="&#x4E2D;&#x6587";
function code2(str) {
    var result = "";
    result=str.replace(/&#x([a-zA-Z0-9]+);{0,1}/g,(substring,$1)=>{
        //console.log(substring+"arg="+arg);
        return "%u"+$1;
    });
    return unescape(result);
}
console.log(code2(str)); //中文

3、中文和 &# 互转

使用 .charCodeAt可以获取unicode码

tip:&#55372;&#56777; 在html标签中会自动编码为汉字,和&nbsp;类似

在线互转(Unicode和ASCII):http://tool.chinaz.com/tools/unicode.aspx

3.1 中文转 &#

过程:

中文
=>找到unicode十进制再前缀&#即可
=>"&#"+"中".charCodeAt(0)+";"+"&#"+"文".charCodeAt(0) +";"
=>"&#20013;&#25991;"

js实现:

function code(str) {
    var result = "";
    for (var i = 0; i < str.length; i++) {
        result += "&#" + str.charCodeAt(i)+";";
    }
    return result;
}

//测试
console.log(code("中文")) //&#20013;&#25991;

3.2 &# 转 中文

过程:

&#20013;&#25991;
=> 去除unicode  [20013,25991]
=>把字节编码为字符集汉字(utf8)
=>中文

js实现:

function code(str) {
    var arry = str.match(/&#(\d+);/g);
    var result = "";
    for (var i = 0; i < arry.length; i++) {
        result += String.fromCharCode(arry[i].replace(/[&#;]/g, ''))
    }
    return result;
}
//测试
console.log(code("&#20013;&#25991;")) //𣇉
//补充
String.fromCharCode(55372,56777) //𣇉
String.fromCharCode(55372,56777,20013,25991)// 𣇉中文
String.fromCharCode("u") => "\u0000" //非数字返回 "\u0000"

4 中文 和 \x 互转

encodeURI会进行utf8按字节编码,比如

encodeURI(“𣇉”) =>"%F0%A3%87%89" 和\x也是按字节 异曲同工。

4.1 中文 转 \x

过程:

encodeURI("中文") => "%E4%B8%AD%E6%96%87" => %替换为\x=> \xE4\xB8\xAD\xE6\x96\x87

补充:\x一般是其他程序产生,而不是js

js实现:

function code(str) {
    return encodeURI(str).replace(/%/g,"\\x");
}
var x="中文";
console.log(code(x)); //\xE4\xB8\xAD\xE6\x96\x87

4.2 \x 转 中文

过程:

 \xE4\xB8\xAD\xE6\x96\x87=>替换\x为% =>%E4%B8%AD%E6%96%87

		 =>decodeURI("%E4%B8%AD%E6%96%87") => 中文

js实现:

function code(str) {
    return decodeURI(str.replace(/\\x/g,"%"));
}
var x="\\xE4\\xB8\\xAD\\xE6\\x96\\x87";
console.log(code(x)); //中文

5、中文和unicode 互转

使用escape和unescape 进行unicode 转码

在线互转(中文和unicode):https://www.bejson.com/convert/unicode_chinese/

5.1 中文转unicode

过程 :

escape("中文") => "%u4E2D%u6587" =>替换%为\u即可=>"\u4E2D\u6587"

js实现:

function code(str) {
    var result="";
    for (var i = 0; i < str.length; i++) {
       var tmp="00" + str.charCodeAt(i).toString(16);
        result+="\\u"+tmp.slice(-4);
    }
    return result;
}

console.log(code("中文"));//\u4e2d\u6587

5.2 unicode转中文

过程 :

js中识别unicode
比如var a="\u4e2d\u6587" //a就是中文


"\\u4e2d\\u6587"
=>"%u4e2d%u6587"
=>unescape("%u4e2d%u6587")
=>中文

js实现:

function code2(str) {
    var b=str.replace(/\\/g,"%");
    console.log(b)
   return  unescape(b);
}


//测试
console.log(code2("\\u4e2d\\u6587"));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

javascript &#x开头,&#开头,\x开头,%开头 转中文 的相关文章

  • 在沙盒中的服务器上运行不受信任的 JavaScript 代码

    我似乎不知道如何设置节点沙箱 它可以安全地运行不受信任的代码 并允许用户通过api调用与程序交互 系统输入和输出 我正在尝试在浏览器中设置一个控制台 以便用户从服务器运行自己的代码 是否有任何节点包支持此功能 或者我是否需要编写自己的节点虚
  • 禁用 Ctrl + 滚动以缩放谷歌地图

    Does anybody know how to disable the CTRL Scroll First when the mouse wheel was moved the Map would Zoom in out But now
  • JW Player - 视频可以在 Chrome 中播放,不能在 Firefox 或 IE 中播放

    See 工作链接 http www 888behindthescenes com test 在主页上我有两个视频 intro video 和 video container 在 chrome 下我没有问题 但在 firefox 和 IE 中
  • ExtJs4 Json TreeStore?

    我正在将 ExtJs3 应用程序迁移到 ExtJs4 在 ExtJs3 中 我有一个树网格 它有一个加载器来加载树数据 如下所示 loader new Ext tree TreeLoader dataUrl Department Depar
  • 使用 Jasmine 监视 Backbone.js 路由调用

    在主干路由器上监视方法调用时遇到问题 以确保它在给定路由上调用正确的方法 测试摘录 describe Router gt beforeEach gt router new App Router Backbone history start
  • .getDay() 奇怪的行为[重复]

    这个问题在这里已经有答案了 有一个例子 console log new Date 2013 02 24 getDay 24 gt 0 24 console log new Date 2013 02 25 getDay 25 gt 1 25
  • 如何获取 CSS 旋转元素的实际(非原始)高度

    我需要获取几个不同元素的实际高度 为了精确的自定义工具提示定位 并且其中一些元素 不是全部 被旋转 elem outerHeight 返回原始高度 而不是实际显示的高度 这是一个非常简单的例子 http jsfiddle net NPC42
  • 重置输入控件的边框颜色 (HTML/Javascript)

    有谁知道使用 javascript 修改输入控件后如何重置它的边框颜色 通过突出显示其中包含不正确或无效数据的字段等来进行验证非常有用 例如 改变边框 document getElementById myinput style border
  • 使用西里尔字母的正则表达式

    我有一个用于文本区域字段中字数统计的 jQuery 函数 此外 它排除所有用 三重括号 封闭的单词 它对于拉丁字符效果很好 但对于西里尔字母句子有问题 我认为错误部分与正则表达式有关 field val replace g match b
  • 如何使 Loopback 模型事件起作用?

    我尝试过一个例子http apidocs strongloop com loopback model http apidocs strongloop com loopback model MyModel on changed functio
  • 调整发散堆积条形图以使用通用更新模式

    我一直在使用可用的堆积条形图示例here https bl ocks org mbostock b5935342c6d21928111928401e2c8608使用以下代码 var data month Q1 2016 apples 384
  • JavaScript 中的自定义“确认”对话框?

    我一直在开发一个使用自定义 模式对话框 的 ASP net 项目 我在这里使用吓人引号 因为我知道 模式对话框 只是我的 html 文档中的一个 div 它被设置为出现在文档其余部分的 顶部 而不是真正意义上的模式对话框 在网站的许多部分
  • 需要了解Javascript函数提升示例

    我阅读了 Javascript 提升的概念 它非常令人困惑 但我看到了一些示例并了解了提升的实际作用 所以基本上 提升是 JavaScript 的默认行为 即将所有声明移动到当前作用域的顶部 当前脚本或当前函数的顶部 但我无法理解以下实现
  • 如何从 dataurl 在服务器上创建图像文件

    我有一个 dataurl 格式的图像 例如 data image jpeg base64 9j 4AAQSkZJRgABAQAAAQABAAD 2wBDAAMCAgMCAgMDAwMEAwME iiigAooooAKKKKACiiigAoo
  • 不用AJAX,前台同步拖放文件上传?

    我有一个定期的网站
  • 在没有全局变量的情况下对多个事件使用 Promise 回调

    我有一个包含在函数中的承诺 我将使用不同的输入参数多次调用该函数 每次承诺解决时 我都会将解决的值推送到存储数组中 当我所有的调用承诺都得到解决后 我将在其他函数中使用这个存储数组 是否有任何干净的方法可以在不使用 全局 变量的情况下进行设
  • Web 扩展中共享 vuex 状态(死对象问题)

    我正在尝试在网络扩展中使用共享的 vue js 状态 状态存储在后台脚本的 DOM 中并呈现在弹出页面中 第一次尝试 我的第一次尝试是使用一个没有 vuex 的简单商店 背景 js var store count 0 popup js br
  • 内联 YouTube 视频在 iOS 上的 cordova 应用程序中不起作用

    我用 cordova 开发了一个移动应用程序 我确实需要能够播放内联 YouTube 视频 我尝试了一段时间来解决它 我设置了属性playsinline to 1在 YouTube iframe API 中 I put
  • JavaScript 反静默技术来指示失败

    当错误确实发生并且函数无法继续执行时 在 JavaScript 中报告错误而不是依赖 null 和 undefined 是一个好方法 我可以想到三种方法 没做什么 抛出异常 assert 这是一个简单的示例场景 一个将传入的金额记入用户帐户
  • 获取不正确的日期,将时间戳转换为新日期

    我正在尝试将时间戳转换为日期 但得到的日期不正确 我正在开发一个使用 Angular 和 Typescript 的项目 我有这样的时间戳 1451642400 2016年1月1日 和1454320800 2016年2月1日 如果我编码 da

随机推荐

  • Matplotlib系列(七):动画

    Matplotlib系列目录 文章目录 一 简介二 思维导图三 Matplotlib动画及图形修改操作1 手写代码更新图形实现动画2 animation模块动画2 1 Animation类简介2 2 FuncAnimation动画2 3 A
  • 01-Docker实战,搭建NodeJs环境

    目的 实现简单的docker的nodejs容器 xff0c 使用Dockerfile构建我们的使用nodejs开发的系统 技术栈 DockerNodejsExpressLinux step1 下拉nodejs基础容器 node 本次我需要使
  • 【Cocos2d-X-2.1.4游戏引擎】发布第一个游戏

    有一段时间没更新博客了 xff0c 最近一直在写一个小游戏 xff0c 游戏在今天终于搞好了 xff0c 又可以开始写写博客 xff0c 打打dota的悠闲的日子了哈 看了十几天cocos2d x后 xff0c 也依照官网的例子写了个打飞机
  • 游戏升级之路

    七十一雾央原创 转载请注明 http blog csdn net hust xy 楼主学习编程有两年了 xff0c 决定向游戏发展大概就是半年前了 xff0c 在这里总结一下游戏方面的学习经历过 xff0c 给初学的朋友们参考下 xff0c
  • vs2017下linux远程调试经验

    调了半天 xff0c 终于进入gdb断点调试了 xff0c 下面分享下经验 xff1a 1 vs2017建立工程 xff0c 出现gdb server找不到 xff0c 解决方法 xff1a http blog csdn net hutia
  • Android Studio 3.6新功能ViewBinding解析

    Android Studio使用技巧 看这一篇就够了 Google官方在2020年3月份发布了Android Studio3 6的版本 xff0c 此版本增加了很多新的功能 xff0c 其中一大亮点功能就是ViewBinding ViewB
  • VBoxManage 命令详解

    查看当前虚拟机 VBxoManage list vms 查看当前正在运行的虚拟机 VBoxManage list runningvms 启动虚拟机 VBoxManage startvm 虚拟机名 无前端图形界面方式启动虚拟机 VBoxMan
  • [Errno 256] No more mirrors to try.解决过程

    今天在Linux服务器上安装rdesktop安装包的时候遇到该报错 xff0c 如图所示 xff1a df h查看挂载盘信息 xff0c 发现光驱未挂载 我设置的挂载光驱路径为 media cdrom 解决过程 xff1a 1 挂载光驱 m
  • c# 简单调用rabbitmq

    如果小伙伴们还没有安装rabbitmq xff0c 可以参考下面链接 https www cnblogs com kiba p 11703073 html 如果想要快速获取整个rabbitmq安装包 xff0c 就关注本人公众号 墨水直达
  • 如何学习一门编程语言,从入门到不放弃!

    在学习前 xff0c 如果能把以下几个方面的问题弄清楚 xff0c 就能够比较顺利和高效的学习 xff0c 拿到你所想要的目标 而不是从入门到放弃 一 方向和目标 首先要确定为什么要学习计算机编程语言 xff0c 为考试 xff1f 为工作
  • 一年精通,三年熟悉,五年了解,十年用过!C++真的这么难吗?

    C 43 43 有句俗话说 xff1a 一年精通 三年熟悉 五年了解 十年用过 如果可以把C 43 43 程序员分层的话 xff0c 看看你在第几层 xff1f 第0层 掌握基本的C 43 43 语法 xff0c 会写一些基本的if els
  • 2023年最新manim系列教程【持续更新中】

    2023年最新Manim系列教程 将持续更新 xff1a 教程更新过程中 xff0c 依旧会对于已发布内容进行更新维护 xff0c 包括但不限于纠错 xff0c 将官网公布的过时功能更新到新版等 个人博客官网 xff1a https mar
  • eclipse代码补齐快捷键失效问题

    1 xff1a 在Window preference general下面的keys中 xff0c 把content asist这个改成alt 43 2 xff1a 在下面 xff0c 有一个when xff0c 选择editing text
  • Ubuntu 界面卡死的办法

  • idea toggle offline mode

    toggle offline mode 切换脱机模式 当点击这个按钮 xff0c 就会进入脱机模式 当您切换到脱机模式时 xff0c maven必须使用本地的资源 xff0c 比如依赖 xff08 只会本地仓库找 xff0c 不会网上去下载
  • 《机器学习》课后习题3.5 编辑实现线性判别分析,并给出西瓜数据集 3.0α 上的结果.

    参考了han同学的答案 xff0c 西瓜数据集也可在han同学的github上下载 3 5 编辑实现线性判别分析 xff0c 并给出西瓜数据集 3 0 上的结果 span class token keyword import span nu
  • Centos 8下安装jdk1.8

    安装环境 xff1a Centos 8 JDK版本 xff1a 1 8 用户名 xff1a huwei JDK1 8压缩包链接 xff1a https pan baidu com s 15DfvlIKRl1G4fk5rFNigQg 提取码
  • java同步获取异步任务结果JavaPromise

    同步获取异步任务结果 思路 xff1a 首先从jdk提供的框架和代码入手 xff0c 然后再自己定义一个 xff0c 原创qq作者 855189478 1 CountDownLatch 使用同步框架可以实现同步 xff0c 但是不能获取到异
  • 此Web应用程序实例已停止。无法加载

    1 1 现象 关闭tomcat时 xff0c 报无法加载类的错误 非法访问 xff1a 此Web应用程序实例已停止 无法加载 io netty util concurrent DefaultPromise 1 java lang NoCla
  • javascript &#x开头,&#开头,\x开头,%开头 转中文

    目录 关于 xff1a js提供的函数1 js编码有关函数1 1 unicode编码1 2 utf 8编码1 3 进制方法1 4 编码方法1 4 补充 2 中文 和 amp x 互转2 1 中文 转 amp x2 2 amp x 转中文 3