三联房性早搏三联律是一个什么类型

编码 Unicode 及其在 JavaScript 中的使用_Linux编程_Linux公社-Linux系统门户网站
你好,游客
编码 Unicode 及其在 JavaScript 中的使用
来源:Linux中国&
作者:Linux
一、javascript 使用 unicode16 字符集,可以使用中文变量名和函数名
计算机使用 8 位(bit)二进制表示一个字节(Byte),计算机内存最小寻址单位就是 1 字节。早期为了在计算机上使用同一的方式使用字符,使用无符号整数来标记字符。
ANSI(美国国家标准局)制订了ASCII(American Standard Code for Information Interchange,美国信息交换标准代码),使用一个字节大小的二进制数来编码每个字符。ASCII已经被国际标准化组织(ISO)定为国际标准,称为ISO 646标准。
一个字节为8位二进制,2的8次方为256,因此有256个字符可以用一个字节来表示(0~255),但ASCII字符集只设计了128个字符(字母、数字、一些标点符号和控制字符),因此实际上只用到7位二进制,第八位设置为0,剩下的128个编码位置是闲置的。
有的计算机厂商可能会利用闲置的128个空位来制订一些字符的编码,称为OEM字符集。例如,IBM使用多出来的128位扩展了一个ASCII 扩展表,包含了一些控制符和制表符等等,被广泛使用在电子元件的数据通讯和存储中,但OEM字符集不是通用的标准。
为了编码更多的字符,2个研究字符编码的机构合并研究成果,制订了 unicode 字符集。unicode 字符集使用使用多个字节来为字符编码,按使用的字节数不同制订了不同方案,所有 unicode 编码方案前 1 个字节(256个码位)的编码对应的字符都是 ASCII 字符集中的字符。
目前 unicode 编码已经达到 64 位,使用 8 个字节标记一个字符。
如果每个字符用2个字节(16位二进制数)来标记,可以编码 65536 个字符(2 的16次方),这基本上已经可以标记世界上所有国家的语言符号,因此,在实际中通用的是UCS-2通用字符集(Universal Character Set,UCS),由ISO制定的ISO 10646(或称ISO/IEC 10646)标准所定义。UCS 为第一字节的128个空位增补了一个字符集,称为&C1控制符及拉丁文补充-1 (C1 Control and Latin 1 Supplement)。
UCS-2字符集编码法有17个位面,每个位面都用2个字节来标记字符,17个位面可以映射 1,112,064个字符,其中最常用最重要的是编号为 0 的位面,里面包含了最常用的字符编码,称为基本多国语言平面BMP(Basic Multilingual Plane)。
Unicode 第 0 平面(BMP)中的编码被划分为不同区段,各国文字符号、控制符、制表符、图形字符等 都有连续的分布,其中中文简繁体区段是 4E00-9FBF。
F:C0控制符及基本拉丁文 (C0 Control and Basic Latin)  
0080-00FF:C1控制符及拉丁文补充-1 (C1 Control and Latin 1 Supplement)  
F:拉丁文扩展-A (Latin Extended-A)  
F:拉丁文扩展-B (Latin Extended-B)  
0250-02AF:国际音标扩展 (IPA Extensions)  
02B0-02FF:空白修饰字母 (Spacing Modifiers)  
F:结合用读音符号 (Combining Diacritics Marks)
4E00-9FBF:CJK 统一表意符号 (CJK Unified Ideographs)
(......还有很多国家语言和甲骨文等已经不用或极少使用的语言或字符的专用区段)
从第1位面开始,字符的unicode编码已经超出16位二进制数的范围,因此UCS-2无法使用2个字节直接编码BMP位面之外的字符。但是,在 UCS-2 编码中,区段 UD800 到 UDFFF 的码位是闲置的保留位,因此,可以使用这个区段中的码位通过一定的转换方式映射到其他位面的 unicode 编码。
在实际的字符传输和存储行为中,为了节省字节数,可能不会直接传输 unicode 编码,而是使用 Unicode转换格式(Unicode Transformation Format,简称为UTF),目前常见的 UTF格式有UTF-7, UTF-7.5, UTF-8, UTF-16, 以及 UTF-32,他们是由 ITTF(Internet Engineering Task Force,互联网工程任务组)组织进行标准化的,UTF-8 和 UTF-16 编码使用比较广泛。
UTF-16 编码:该编码法在 UCS-2 第0位面字符集的基础上利用 D800-DFFF 区段的码位通过一定转换方式将超出2字节的字符编码为一对16比特长的码元(即32bit,4Bytes),称作代理码对 (surrogate pair)。
例如字符&&,他处于编号'2'的位面(总共17个位面,位面编号为16进制数0-10,第0位面可以舍去编号0直接用4位16进制数编码),码位是A6A5,即unicode编码为&2A6A5,它在UTF-16中的代理码对为 d869 dea5,但是通过 js 的charCodeAt()函数只能得出高位码对,但是这并不影响解码软件对字符编码进行定位,因为这些字符的代理码对都是成对地分布在& UD800-UDFFF 区段内的,并不存在交叉的现象,知道高位码对也可以简单地搜索到低位码对。
UTF-16 编码出现以前,UD800-UDFFF 区段的码位可能会被一些计算机产品设计者利用,而且其他位面的字符极少用到,因此,一些软件可能无法正确识别代理码对,这可能会导致一些BUG。例如,python 2.6 在 UNIX 平台上便无法正确识别代理码对。如果一个软件声称自己支持UCS-2,那么他很可能是不支持UTF-16的。
javascript 跟 java 一样使用UTF-16编码,因此, 实际上 javascript 程序中变量名和函数名可以使用ASCII 之外的字符,例如中文,不过网页文件保存的编码格式要注意,使用的编码格式对字符编码的范围应当不小于 UTF-16,比如保存为 utf-8 编码。
function试试看(){
var打个招呼={你好:'好你妹!'};
alert(打个招呼.你好);
二、字符编码格式及其在 javascript 中的使用
1、unicode 16进制编码
unicode 16 使用 16位二进制编码字符,但是其编码格式在书面上使用16进制(二进制写起来太长了),在javascript中, \u 加 4个16进制字符表示一个字符的编码(每个字节 8 位二进制对应2位十六进制,2^8 = 256 = 16^2),不足4位16进制的,高位用0补足,比如 \u55B5 表示汉字 "喵",字母 "a" 的 ASCII 码是10进制 97,表示成 16 进制 unicode 编码格式就是 \u0061。试试打印出来:&
document.write('\u55B5');&
document.write('\u0061');
2、javascript charCodeAt 和 String.fromChartCode 使用 10 进制编码
在 javascript 字符串的 charCodeAt 和 String.fromChartCode 中取得和使用的字节编码都是 10 进制的,因此在 document.write 和 这些方法配合使用时需要进行进制转换。另外要注意的是,如果一个变量保存了一个字符的 unicode() 编码,你想用 document.write() 打印到页面上就需要注意了,不要将'\u' 转义成 '\\u' ,如果转义了,需要使用 eval() 来执行,否则将直接把编码打印出来:
var code1 ='\\u0061';
document.write(code1);// \u0061
var code2 ='\u0061';
document.write(code2);// a
但是在表达式中,也许你想拼接出 unicode 编码后打印字符串,这就要注意了,因为在字符串中 \u 后面必须接 4个十六进制字符才是合法的语法,所以不得不转义:
var code ="\\u"+("0000"+('a').charCodeAt(0).toString(16)).slice(-4);
document.write(code);// \u0061
document.write(eval('"'+code+'"'));//正确做法 ,注意eval 时加上引号,因为 document.write 接受的参数是字符串,document.write("\u0061"),其中 \u0061 是单个字符,而不是可以分割的多个字符组成的字符串 ( "\\"+"u"+"0061" ), 而形如document.write(\u0061) 的语句是个语法错误.
&试试下面代码
function \u0061(){ console.log(123)}
3、javascript 中的单字节编码
在 js 中,可以使用 \x 加 2位16进制字符标记一个单字节的字符,例如字符 'a' 可以表示为 \x61,用法类似\u 加4位16进制编码。
document.write('\x61');// a
\u 加四位十六进制数 或 \x 加2位十六进制数属于转义字符,在 js 字符串长度中只算 1 个,转义字符不能直接用于 HTML 文件(不会转换后输出,而是直接输出转义格式的字符串),但可以用 document.write()打印出来,因为在 js 语法范围内,虽然表达方式不一样,但是转义字符和直接的字符字面量都是指同一个东西:
console.log("\u0061"==='a');//true&
('123|u55b5abc').length //12
('123|u55b5abc').split('')//["1", "2", "3", "|", "u", "5", "5", "b", "5", "a", "b", "c"]
('123\u55b5abc').length //7
('123\u55b5abc').split('')// ["1", "2", "3", "喵", "a", "b", "c"]
4、 xss 与 字符编码
当向页面显示用户输入的内容是,通常我们要过滤或转义 script 标签以避免 XSS 攻击,
但是,需要注意的是, \u+16进制 、\x+16进制 、字符实体如果出现在模板中的 HTML 标签属性中就需要特别注意了,他们会正确解码后才赋给标签的属性,例如:
document.body.innerHTML ='&img src="wrongUrl.gif" onerror="this.src='http://www.xss.com'" &';
对标签属性之进行转义时,需要对注意,是比较下面2个做法:
document.body.innerHTML ='&a onclick="\&\#116;\&\#104;\&\#105;\&\#115;"&click me&/a&';
document.body.innerHTML ='&a onclick="\\&\\#116;\\&\\#104;\\&\\#105;\\&\\#115;"&click me&/a&';
5、八进制转义字符
js 字符串中,\ 开始后接正数,可能被解析为8进制转义字符。
一个八进制转义字符形成的条件是:斜线后面接的整数最长3位,至少1位,单个数字的字面值不大于8。
如果过不满足任意一项,都将结束一个字符的解释,开始新字符的解释。八进制转义字符的10进制数字字面值最大值为377,即 '\377' 被解析为一个字符,'\378' 被解析为2个字符: '\37' 和 '8' :
'\377'.length //1
console.log('\377')// &
'\378'.length //2
'\128'.length //2
console.log('\127')//W
'W'.charCodeAt(0)//87
(87).toString(8)//'127'
更多详情见请继续阅读下一页的精彩内容:
相关资讯 & & &
& (12/13/:00)
& (06/20/:05)
& (06/22/:04)
& (07/11/:36)
& (01/26/:22)
   同意评论声明
   发表
尊重网上道德,遵守中华人民共和国的各项有关法律法规
承担一切因您的行为而直接或间接导致的民事或刑事法律责任
本站管理人员有权保留或删除其管辖留言中的任意内容
本站有权在网站内转载或引用您的评论
参与本评论即表明您已经阅读并接受上述条款扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
下载作业帮安装包
扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
密码必须为数字和字母的组合(不能为纯数字或纯字母),且至少包含4个字符什么是字符?
扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
字符通俗来讲就是你输入的数字或者字母他的意思就是说必须要输入四位包含数字和字母在内的密码,这四位密码不能全都是数字或者全都是字母,比如:123a、ab23 .
为您推荐:
其他类似问题
扫描下载二维码 上传我的文档
 下载
 收藏
该文档贡献者很忙,什么也没留下。
 下载此文档
正在努力加载中...
web前台技术4—javascript
下载积分:3500
内容提示:web前台技术4—javascript
文档格式:PDF|
浏览次数:1|
上传日期: 20:58:42|
文档星级:
全文阅读已结束,如果下载本文需要使用
 3500 积分
下载此文档
该用户还上传了这些文档
web前台技术4—javascript
官方公共微信js中替换一个字符串中的某一段字符串
我的图书馆
js中替换一个字符串中的某一段字符串
JaveScript:&script type="text/javascript"& &&&&var msg = "{FieldName}的最大长度不能超过{FieldLength}个字符(1个中文占3位)"; &&&&msg=msg.replace('FieldName', '用户名');msg=msg.replace('FieldLength', '30'); &&&alert(msg);&/script&
默认是只替换一次
str = “a%5B0%5D=1a%5B1%5D=2″;
只替换最后一个alert(str.replace(“%5B”,”[“));
alert(str.replace(/%5B/g,”[“)) 全部替换【正则】
function formatStr(str) { str=str.replace(/\r\n/ig,"&br/&");
} 要注意两点:
要使用正则表达式,不能使用 str.replace("\r\n", newString); ,这会导致只替换第一个匹配的子字符串。 母字符串中不一定 \r\n 会同时存在,也许只有 \n,没有 \r 也是可能的。
*******************
js中replace的用法
*******************
replace方法的语法是:stringObj.replace(rgExp, replaceText) 其中stringObj是字符串(string),reExp可以是正则表达式对象(RegExp)也可以是字符串(string),replaceText是替代查找到的字符串。。为了帮助大家更好的理解,下面举个简单例子说明一下 Js代码&script language="javascript"& &&var stringObj="终古人民共和国,终古人民"; && &//替换错别字“终古”为“中国” &&//并返回替换后的新字符 &&//原字符串stringObj的值没有改变 &&var newstr=stringObj.replace("终古","中国"); &&alert(newstr); &&&/script& &
&&&比我聪明的你,看完上面的例子之后,会发现第二个错别字“终古”并没有被替换成“中国”,我们可以执行二次replace方法把第二个错别字“终古”也替换掉,程序经过改进之后如下:Js代码&script language="javascript"& &&var stringObj="终古人民共和国,终古人民"; && &//替换错别字“终古”为“中国” &&//并返回替换后的新字符 &&//原字符串stringObj的值没有改变 &&var newstr=stringObj.replace("终古","中国"); && &newstr=newstr.replace("终古","中国"); &&alert(newstr); &&&/script& &
&&&我们可以仔细的想一下,如果有N的N次方个错别字,是不是也要执行N的N次方replace方法来替换掉错别字呢??呵,不用怕,有了正则表达式之后不用一个错别字要执行一次replace方法。。程序经过改进之后的代码如下 Js代码&script language="javascript"& &&var reg=new RegExp("终古","g"); //创建正则RegExp对象 &&var stringObj="终古人民共和国,终古人民"; &&var newstr=stringObj.replace(reg,"中国"); &&alert(newstr); &&&/script& &
上面讲的是replace方法最简单的应用,不知道大家有没有看懂??下面开始讲稍微复杂一点的应用。。
&&&大家在一些网站上搜索文章的时候,会发现这么一个现象,就是搜索的关键字会高亮改变颜色显示出来??这是怎么实现的呢??其实我们可以用正则表达式来实现,具体怎么样实现呢?简单的原理请看下面的代码Js代码&script language="javascript"& &&var str="中华人民共和国,中华人民共和国"; &&var newstr=str.replace(/(人)/g,"&font color=red&$1&/font&"); &&document.write(newstr); &&&/script& &
上面的程序缺少互动性,我们再改进一下程序,实现可以自主输入要查找的字符Js代码&script language="javascript"& &&var s=prompt("请输入在查找的字符","人"); &&var reg=new RegExp("("+s+")","g"); &&var str="中华人民共和国,中华人民共和国"; &&var newstr=str.replace(reg,"&font color=red&$1&/font&"); &&document.write(newstr); &&&/script& &
可能大家都会对$1这个特殊字符表示什么意思不是很理解,其实$1表示的就是左边表达式中括号内的字符,即第一个子匹配,同理可得$2表示第二个子匹配。。什么是子匹配呢??通俗点讲,就是左边每一个括号是第一个字匹配,第二个括号是第二个子匹配。。
当我们要把查找到的字符进行运算的时候,怎么样实现呢??在实现之前,我们先讲一下怎么样获取某一个函数的参数。。在函数Function的内部,有一个arguments集合,这个集合存储了当前函数的所有参数,通过arguments可以获取到函数的所有参数,为了大家理解,请看下面的代码Js代码&script language="javascript"& &&function test(){ && &&alert("参数个数:"+arguments.length); && &&alert("每一个参数的值:"+arguments[0]); && &&alert("第二个参数的值"+arguments[1]); && &//可以用for循环读取所有的参数 &&} && &test("aa","bb","cc"); &&&/script& &
看懂上面的程序之后,我们再来看下面一个有趣的程序Js代码&script language="javascript"& &&var reg=new RegExp("\\d","g"); &&var str="abd1afa4sdf"; &&str.replace(reg,function(){alert(arguments.length);}); &&&/script& &
&&&&我们惊奇的发现,匿名函数竟然被执行了二次,并且在函数里还带有三个参数,为什么会执行二次呢??这个很容易想到,因为我们写的正则表达式是匹配单个数字的,而被检测的字符串刚好也有二个数字,故匿名函数被执行了二次。。在匿名函数内部的那三个参数到底是什么内容呢??为了弄清这个问题,我们看下面的代码。Js代码&script language="javascript"& &&function test(){ &&for(var i=0;i&arguments.i++){ && &&&alert("第"+(i+1)+"个参数的值:"+arguments[i]); &&} &&} &&var reg=new RegExp("\\d","g"); &&var str="abd1afa4sdf"; &&str.replace(reg,test); &&&/script& &
&&&&经过观察我们发现,第一个参数表示匹配到的字符,第二个参数表示匹配时的字符最小索引位置(RegExp.index),第三个参数表示被匹配的字符串(RegExp.input)。其实这些参数的个数,还会随着子匹配的变多而变多的。弄清这些问题之后,我们可以用另外的一种写法Js代码&script language="javascript"& &&function test($1){ && &return "&font color='red'&"+$1+"&/font&" &} &&var s=prompt("请输入在查找的字符","人"); &&var reg=new RegExp("("+s+")","g"); &&var str="中华人民共和国,中华人民共和国"; &&var newstr=str.replace(reg,test); &&document.write(newstr); &&&/script& &
看了上面的程序,原来可以对匹配到的字符为所欲为。下面简单举一个应用的例子Js代码&script language="javascript"& &&var str="他今年22岁,她今年20岁,他的爸爸今年45岁,她的爸爸今年44岁,一共有4人" &function test($1){ && &var gyear=(new Date()).getYear()-parseInt($1)+1; && &return $1+"("+gyear+"年出生)"; &&} &&var reg=new RegExp("(\\d+)岁","g"); &&var newstr=str.replace(reg,test); &&alert(str); &&alert(newstr); &&&/script& &
TA的最新馆藏[转]&[转]&[转]&[转]&[转]&用户名需为4-20个字符(包括、数字、字母、下划线,每个汉字为2字符) 什么意思
全部答案(共2个回答)
。数字,字母下划线组成。比如“你1m_”这个就可以
在网上银行里面就会出现这样的账号比如:ABC123@_.
在新建的账号时候,会有这样的提示
用户名:4~20个字符(仅限字母、数字、下划线)
创建的时候,...
你看看字母数字如果全半角不对也是不行的
一个字母为一个字符,算上字母 后面还可以打14个字母或者数字。希望对你有帮助。
修改不了微博昵称,可能是昵称被占用了,建议重新换个昵称试试的,还需要注意的是:设置或修改的昵称,请在4-30个字符,支持中英文、数字、“_”和减号。为了方便昵称...
大家还关注
确定举报此问题
举报原因(必选):
广告或垃圾信息
激进时政或意识形态话题
不雅词句或人身攻击
侵犯他人隐私
其它违法和不良信息
报告,这不是个问题
报告原因(必选):
这不是个问题
这个问题分类似乎错了
这个不是我熟悉的地区

我要回帖

更多关于 室性早搏三联律的危害 的文章

 

随机推荐