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 相关文章推荐
JS实现图片预加载无需等待
Dec 21 Javascript
常见浏览器多长时间会提示“脚本运行时间过长”总结
Apr 29 Javascript
使用javascript实现简单的选项卡切换
Jan 09 Javascript
详解Javascript继承的实现
Mar 25 Javascript
JavaScript中捕获/阻止捕获、冒泡/阻止冒泡方法
Dec 07 Javascript
基于JavaScript实现滑动门效果
Mar 16 Javascript
使用vue2实现购物车和地址选配功能
Mar 29 Javascript
vue实现与安卓、IOS交互的方法
Nov 02 Javascript
json数据格式常见操作示例
Jun 13 Javascript
Vue组件间通信 Vuex的用法解析
Aug 05 Javascript
vue 通过 Prop 向子组件传递数据的实现方法
Oct 30 Javascript
JavaScript中document.activeELement焦点元素介绍
Nov 27 Javascript
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
聊天室php&amp;mysql(五)
2006/10/09 PHP
php模块memcache和memcached区别分析
2011/06/14 PHP
PHP中去掉字符串首尾空格的方法
2012/05/19 PHP
PHP与MYSQL中UTF8 中文排序示例代码
2014/10/23 PHP
php格式化金额函数分享
2015/02/02 PHP
些很实用且必用的小脚本代码
2006/06/26 Javascript
jQuery 动画弹出窗体支持多种展现方式
2010/04/29 Javascript
js页面滚动时层智能浮动定位实现(jQuery/MooTools)
2011/08/23 Javascript
javascript中将Object转换为String函数代码 (json str)
2012/04/29 Javascript
实例讲解jquery中mouseleave和mouseout的区别
2016/02/17 Javascript
jquery使用Cookie和JSON记录用户最近浏览历史
2016/04/19 Javascript
Jquery修改image的src属性,图片不加载问题的解决方法
2016/05/17 Javascript
实现JavaScript的组成----BOM和DOM详解
2016/05/18 Javascript
浅谈JS验证表单文本域输入空格的问题
2017/02/14 Javascript
js数字计算 误差问题的快速解决方法
2017/02/28 Javascript
JS去掉字符串中所有的逗号
2017/10/18 Javascript
JavaScript错误处理操作实例详解
2019/01/04 Javascript
JavaScript如何借用构造函数继承
2019/11/06 Javascript
es6函数之箭头函数用法实例详解
2020/04/25 Javascript
[15:56]Heroes18_暗影萨满(完美)
2014/10/31 DOTA
Python利用pandas计算多个CSV文件数据值的实例
2018/04/19 Python
在pycharm下设置自己的个性模版方法
2019/07/15 Python
python 如何区分return和yield
2020/09/22 Python
CSS3的Border-radius轻松制作圆角
2012/12/24 HTML / CSS
HTML5计时器小例子
2013/10/15 HTML / CSS
在加拿大在线租赁和购买电子游戏:Game Access
2019/09/02 全球购物
如何判断计算机可能已经中马
2013/03/22 面试题
老总助理工作岗位职责
2014/02/06 职场文书
理财投资建议书
2014/03/12 职场文书
企业安全生产责任书
2014/04/14 职场文书
伦敦奥运会的口号
2014/06/21 职场文书
委托书怎么写
2014/07/31 职场文书
《巨人的花园》教学反思
2016/02/19 职场文书
详解MySQL多版本并发控制机制(MVCC)源码
2021/06/23 MySQL
《Estab Life》4月6日播出 正式PV、主视觉图公开
2022/03/20 日漫
python计算列表元素与乘积详情
2022/08/05 Python