js 中文汉字转Unicode、Unicode转中文汉字、ASCII转换Unicode、Unicode转换ASCII、中文转换


Posted in Javascript onDecember 06, 2016

最近看不少在线工具里面都有一些编码转换的代码,很多情况下我们都用得到,这里三水点靠木小编就跟大家分享一下这些资料

Unicode介绍

Unicode(统一码、万国码、单一码)是一种在计算机上使用的字符编码。
Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。
Unicode是国际组织制定的可以容纳世界上所有文字和符号的字符编码方案。Unicode用数字0-0x10FFFF来映射这些字符,最多可以容纳1114112个字符,或者说有1114112个码位。码位就是可以分配给字符的数字。
Unicode 到目前为止所定义的五个平面中,第0平面(BMP)最为重要,其编码中文汉字范围为:4E00-9FBFCJK 统一表意符号 (CJK Unified Ideographs)

ASCII介绍

ASCII是基于拉丁字母的一套电脑编码系统。它主要用于显示现代英语和其他西欧语言。
它是现今最通用的单字节编码系统,并等同于国际标准ISO/IEC 646。
0-127 是7位ASCII 码的范围,是国际标准。至于汉字,不同的字符集用的ascii 码的范围也不一样,常用的汉字字符集有GB2312-80,GBK,Big5,unicode 等。
GB_2312 字符集是目前最常用的汉字编码标准。在这个标准中,每个汉字用2个字节来表示,每个字节的ascii码为 161-254 (16 进制A1 - FE),第一个字节 对应于 区码的1-94 区,第二个字节 对应于位码的1-94 位。

ASCII介绍

native2ascii是sun java sdk提供的一个工具。用来将别的文本类文件(比如*.txt,*.ini,*.properties,*.java等等)编码转为Unicode编码。为什么要进行转码,原因在于程序的国际化。
安装了jdk后,假如你是在windows上安装,那么在jdk的安装目录下,会有一个bin目录,其中native2ascii.exe正是native2ascii中文转unicode工具。
native2ascii的命令行的命名格式:native2ascii -[options] [inputfile [outputfile]]。
例如:native2ascii zh.txt u.txt:将zh.txt转换为Unicode编码,输出文件到u.txt。

本工具中汉字与Unicode转换采用PHP开发,支持十六进制和十进制表示,能够中文汉字和Unicode互转;默认情况下采用十六进制。

下面函数都需要用到的函数

function left_zero_4(str) {
			if (str != null && str != '' && str != 'undefined') {
				if (str.length == 2) {
					return '00' + str;
				}
			}
			return str;
		}

中文汉字转Unicode

function unicode(str){
			var value='';
			for (var i = 0; i < str.length; i++) {
				value += '\\u' + left_zero_4(parseInt(str.charCodeAt(i)).toString(16));
			}
			return value;
		}
		function left_zero_4(str) {
			if (str != null && str != '' && str != 'undefined') {
				if (str.length == 2) {
					return '00' + str;
				}
			}
			return str;
		}

Unicode转中文汉字、ASCII转换Unicode

function reconvert(str){ 
			str = str.replace(/(\\u)(\w{1,4})/gi,function($0){ 
				return (String.fromCharCode(parseInt((escape($0).replace(/(%5Cu)(\w{1,4})/g,"$2")),16))); 
			}); 
			str = str.replace(/(&#x)(\w{1,4});/gi,function($0){ 
				return String.fromCharCode(parseInt(escape($0).replace(/(%26%23x)(\w{1,4})(%3B)/g,"$2"),16)); 
			}); 
			str = str.replace(/(&#)(\d{1,6});/gi,function($0){ 
				return String.fromCharCode(parseInt(escape($0).replace(/(%26%23)(\d{1,6})(%3B)/g,"$2"))); 
			}); 
			
			return str; 
		}

Unicode转换ASCII

function unicode1(str){ 
			var value='';
			for (var i = 0; i < str.length; i++)
				value += '&#' + str.charCodeAt(i) + ';';
			return value;
		}

中文转换&#XXXX

function ascii(str){ 
			var value='';
			for (var i = 0; i < str.length; i++) {
				value += '\&#x' + left_zero_4(parseInt(str.charCodeAt(i)).toString(16))+';';
			}
			return value;
		}

完整的可以测试的代码

<script type="text/javascript">
		function a(pChoice){
			var inputEle = document.getElementById('input_area');
			var outputEle = document.getElementById('output_area');
			switch(pChoice){ 
				case "CONVERT_FMT1":
					outputEle.value = ascii(inputEle.value);
					break; 
				case "CONVERT_FMT2":
					outputEle.value = unicode(inputEle.value);
					break; 
				case "CONVERT_FMT3":
					outputEle.value = unicode1(inputEle.value);
					break; 
				case "RECONVERT":
					outputEle.value = reconvert(inputEle.value);
					break; 
			} 
		} 
		function ascii(str){ 
			var value='';
			for (var i = 0; i < str.length; i++) {
				value += '\&#x' + left_zero_4(parseInt(str.charCodeAt(i)).toString(16))+';';
			}
			return value;
		} 
		function unicode(str){
			var value='';
			for (var i = 0; i < str.length; i++) {
				value += '\\u' + left_zero_4(parseInt(str.charCodeAt(i)).toString(16));
			}
			return value;
		}
		function left_zero_4(str) {
			if (str != null && str != '' && str != 'undefined') {
				if (str.length == 2) {
					return '00' + str;
				}
			}
			return str;
		}
		function unicode1(str){ 
			var value='';
			for (var i = 0; i < str.length; i++)
				value += '&#' + str.charCodeAt(i) + ';';
			return value;
		} 
		function reconvert(str){ 
			str = str.replace(/(\\u)(\w{1,4})/gi,function($0){ 
				return (String.fromCharCode(parseInt((escape($0).replace(/(%5Cu)(\w{1,4})/g,"$2")),16))); 
			}); 
			str = str.replace(/(&#x)(\w{1,4});/gi,function($0){ 
				return String.fromCharCode(parseInt(escape($0).replace(/(%26%23x)(\w{1,4})(%3B)/g,"$2"),16)); 
			}); 
			str = str.replace(/(&#)(\d{1,6});/gi,function($0){ 
				return String.fromCharCode(parseInt(escape($0).replace(/(%26%23)(\d{1,6})(%3B)/g,"$2"))); 
			}); 
			
			return str; 
		}
		</script>

<style>
textarea {
 width: 100%;
 height: 200px;
 resize:vertical;
 border: 1px solid #CCC;
 /*border-radius:8px;*/
 padding:4px;
 box-shadow: 2px 2px 5px #d3d6da;
 -moz-box-shadow: 2px 2px 5px #d3d6da;
}
</style>
提供一个中文汉字Unicode互转、 ASCII与Unicode互转的在线工具,方便帮助你解决中文的乱码问题。

	  <div class='divider'></div>
	  <textarea id="input_area" name="input_area" placeholder="贴入要处理的Unicode或Ascii字符" value="">3water.com - 三水点靠木</textarea>
			<div class='row'>
				<button onclick="javascript:a('CONVERT_FMT2');">中文汉字转Unicode</button>
				<button onclick="javascript:a('RECONVERT');">Unicode转中文汉字</button>		
				<button onclick="javascript:a('RECONVERT')">ASCII转换Unicode</button>
				<button onclick="javascript:a('CONVERT_FMT3');">Unicode转换ASCII</button>
				<button onclick="javascript:a('CONVERT_FMT1');">中文转换&#XXXX</button>
			</div>
<textarea name="output_area" id="output_area" onclick="this.select();" placeholder="处理之后的Unicode或Ascii字符" value=""></textarea>

这里就介绍这么多,具体的大家可以多测试一下。

Javascript 相关文章推荐
javascript Demo模态窗口
Dec 06 Javascript
javaScript矢量图表库-gRaphael几行代码实现精美的条形图/饼图/点图/曲线图
Jan 09 Javascript
javascript 控制input只允许输入的各种指定内容
Jun 19 Javascript
详解AngularJS实现表单验证
Dec 10 Javascript
jqGrid翻页时数据选中丢失问题的解决办法
Feb 13 Javascript
详解Angular结合zTree异步加载节点数据
Jan 20 Javascript
微信小程序实现跑马灯效果完整代码(附效果图)
May 30 Javascript
vue2实现搜索结果中的搜索关键字高亮的代码
Aug 29 Javascript
区别JavaScript函数声明与变量声明
Sep 12 Javascript
Vue 指令实现按钮级别权限管理功能
Apr 23 Javascript
微信小程序实现卡片层叠滑动效果
Jun 21 Javascript
vue打开新窗口并实现传参的图文实例
Mar 04 Vue.js
JavaScript仿微博输入框效果(案例分析)
Dec 06 #Javascript
js 文字超出长度用省略号代替,鼠标悬停并以悬浮框显示实例
Dec 06 #Javascript
关于 jQuery Easyui异步加载tree的问题解析
Dec 06 #Javascript
JavaScript之Vue.js【入门基础】
Dec 06 #Javascript
浅析JavaScript中作用域和作用域链
Dec 06 #Javascript
利用JS轻松实现获取表单数据
Dec 06 #Javascript
手机移动端实现 jquery和HTML5 Canvas的幸运大奖盘特效
Dec 06 #Javascript
You might like
音乐朗读剧《MARS RED》2021年TV动画化决定!
2020/03/06 日漫
PHP实现用户认证及管理完全源码
2007/03/11 PHP
php实现window平台的checkdnsrr函数
2015/05/27 PHP
全面解读PHP的Yii框架中的日志功能
2016/03/17 PHP
Laravel使用消息队列需要注意的一些问题
2017/12/13 PHP
Laravel 连接(Join)示例
2019/10/16 PHP
兼容IE和Firefox火狐的上下、左右循环无间断滚动JS代码
2013/04/19 Javascript
node.js中的fs.lchmodSync方法使用说明
2014/12/16 Javascript
《JavaScript DOM 编程艺术》读书笔记之JavaScript 语法
2015/01/09 Javascript
JavaScript去除数组里重复值的方法
2015/07/13 Javascript
JavaScript给input的value赋值引发的关于基本类型值和引用类型值问题
2015/12/07 Javascript
javascript中对象的定义、使用以及对象和原型链操作小结
2016/12/14 Javascript
node.js 用socket实现聊天的示例代码
2017/10/17 Javascript
vue中实现滚动加载更多的示例
2017/11/08 Javascript
node.js基础知识小结
2018/02/26 Javascript
解决Mac安装thrift因bison报错的问题
2018/05/17 Javascript
vue-cli配置环境变量的方法
2018/07/09 Javascript
微信小程序实现点赞、取消点赞功能
2018/11/02 Javascript
jQuery高级编程之js对象、json与ajax用法实例分析
2019/11/01 jQuery
JavaScript实现Tab标签页切换的最简便方式(4种)
2020/06/28 Javascript
[02:11]2016国际邀请赛中国区预选赛最美TA采访现场玩家
2016/06/28 DOTA
基于使用paramiko执行远程linux主机命令(详解)
2017/10/16 Python
python 获取当天凌晨零点的时间戳方法
2018/05/22 Python
Python设置在shell脚本中自动补全功能的方法
2018/06/25 Python
python pandas实现excel转为html格式的方法
2018/10/23 Python
Python Tkinter 简单登录界面的实现
2019/06/14 Python
python django生成迁移文件的实例
2019/08/31 Python
英国袜子店:Sock Shop
2017/01/11 全球购物
美国著名的女性内衣零售商:Frederick’s of Hollywood
2018/02/24 全球购物
工地标语大全
2014/06/18 职场文书
党的群众路线领导班子整改方案
2014/09/27 职场文书
地陪导游欢迎词
2015/01/26 职场文书
国际贸易实训总结
2015/08/03 职场文书
团队合作精神学习心得体会
2016/01/19 职场文书
创业计划书之溜冰场
2019/10/25 职场文书
WinServer2012搭建DNS服务器的方法步骤
2022/06/10 Servers