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 08 Javascript
Js中的onblur和onfocus事件应用介绍
Aug 27 Javascript
ExtJS4如何给同一个formpanel不同的url
May 02 Javascript
javascript定义变量时带var与不带var的区别分析
Jan 12 Javascript
网页从弹窗页面单选框传值至父页面代码分享
Sep 29 Javascript
jQuery文字轮播特效
Feb 12 Javascript
JS实现求数组起始项到终止项之和的方法【基于数组扩展函数】
Jun 13 Javascript
通过js动态创建标签,并设置属性方法
Feb 24 Javascript
Webpack4+Babel7+ES6兼容IE8的实现
Apr 10 Javascript
react实现移动端下拉菜单的示例代码
Jan 16 Javascript
Javascript柯里化实现原理及作用解析
Oct 22 Javascript
原生JavaScript实现幻灯片效果
Feb 19 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实现ping
2006/10/09 PHP
《PHP边学边教》(01.开篇――准备工作)
2006/12/13 PHP
php简单静态页生成过程
2008/03/27 PHP
php文件打包 下载之使用PHP自带的ZipArchive压缩文件并下载打包好的文件
2012/06/13 PHP
IIS安装Apache伪静态插件的具体操作图文
2013/07/01 PHP
PHP实现APP微信支付的实例讲解
2018/02/10 PHP
javascript据option的value值快速设定初始的selected选项
2007/08/13 Javascript
jquery.lazyload  实现图片延迟加载jquery插件
2010/02/06 Javascript
javascript hashtable 修正版 下载
2010/12/30 Javascript
jQuery.autocomplete 支持中文输入(firefox)修正方法
2011/03/10 Javascript
解析使用js判断只能输入数字、字母等验证的方法(总结)
2013/05/14 Javascript
基于JavaScript实现动态创建表格和增加表格行数
2015/12/20 Javascript
jQuery插件实现表格隔行变色及鼠标滑过高亮显示效果代码
2016/02/25 Javascript
js将滚动条滚动到指定位置的简单实现方法
2016/06/25 Javascript
Bootstrap Modal遮罩弹出层(完整版)
2016/11/21 Javascript
node.js基于mongodb的搜索分页示例
2017/01/22 Javascript
详解 vue better-scroll滚动插件排坑
2018/02/08 Javascript
详解Vue2.0配置mint-ui踩过的那些坑
2018/04/23 Javascript
浅析vue 函数配置项watch及函数 $watch 源码分享
2018/11/22 Javascript
12个提高JavaScript技能的概念(小结)
2019/05/09 Javascript
Vue2.4+新增属性.sync、$attrs、$listeners的具体使用
2020/03/08 Javascript
Python中的lstrip()方法使用简介
2015/05/19 Python
Python实现修改文件内容的方法分析
2018/03/25 Python
OpenCV图像颜色反转算法详解
2019/05/13 Python
基于python-opencv3的图像显示和保存操作
2019/06/27 Python
详解python3中用HTMLTestRunner.py报ImportError: No module named 'StringIO'如何解决
2019/08/27 Python
Django REST framework 单元测试实例解析
2019/11/07 Python
在python3.64中安装pyinstaller库的方法步骤
2020/06/02 Python
selenium切换标签页解决get超时问题的完整代码
2020/08/30 Python
奥地利顶级内衣丝袜品牌英国站:Wolford英国
2016/08/29 全球购物
绩效工资分配方案
2014/01/18 职场文书
大型晚会策划方案
2014/02/06 职场文书
婚礼女方父母答谢词
2015/01/04 职场文书
2015年煤矿工作总结
2015/04/28 职场文书
Python面向对象之成员相关知识总结
2021/06/24 Python
Mysql排查分析慢sql之explain实战案例
2022/04/19 MySQL