神奇的Alt+数字

  神奇的Alt+数字

也许在 QQ 群上,你看到过这样的信息:
告诉你一件很神奇的事。请先按住键盘的 Alt ,接着在数字键依次按 29482 然后会看到你的名字。 不信就试一下吧!
  如果是第一次看到,应该会照着做,然后发现上当了。同时也会好奇,为什么用 ALT+ 数字可以输出中文呢?这是什么编码?
 一,ASCII码
  我们都知道 ASCII 码的字符数很少,怎么会有中文的呢?这个大概可以说是 ASCII 的扩展吧!具体的编码我不去深究,只想玩玩而已。
在百度搜索栏输入一些文字去搜索,在浏览器的地址栏就可以看到经过编码的字符。比如输入 工大后院 四个字,就会看到这样: “%B9%A4%B4%F3%BA%F3%D4%BA” 。字符编码后还加上了个 “%” ,而且那些数字是十六进制来的( B9A4B4F3BAF3D4BA ), %B9%A4 表示一个汉字 。用 Windows 系统自带的计算器可以转换成十进制( B9A4 B4F3 BAF3 D4BA ,分别变成十进制为 47524 46323 47859 54458 )。打开记事本,按住 ALT 键不放,用右边的数字键盘输入 47524 ,然后松开 ALT 键,就会看到一个 字。
如果想知道其它中文的 ASCII 码,怎么办?上百度网站,在搜索栏输入你想知道它的 ASCII 码的中文,然后看看浏览器的地址栏,去除 % 这个符号就是实际的数字了。每四个就组成一个中文的 ASCII 码(注意此时是十六进制数)。
  下面写个小脚本程序来转换这些 16 进制数字。
< html >
< head >
< script language = "javascript" >
// % 隔开的十六进制转换成十进制,如 %CE%D2%D2%B2
function H2D()
{
     var src=source.value.split( '%' );
     result.value = " 转换结果: " ;
     for ( var i=1; i<src.length; i+=2)
     {
          if (src[i]!= '' )
              result.value+=src[i]+src[i+1]+ "=" +parseInt(src[i]+src[i+1], "16" )+ "; " ;
     }
}
</ script >
</ head >
< body >
< table >
    < caption > 请在左边的文本框输入要转换的字符串 </ caption >
    < tr >
       < td >< textarea id = "source" rows = "5" cols = "50" NAME = "source" ></ textarea ></ td >
       < td >< textarea id = "result" rows = "5" cols = "50" NAME = "result" ></ textarea ></ td >
    </ tr >
    < tr >
       < td colspan = "2" align = "center" >< input type = "button"
           value = "16 进制转换 10 进制 " onclick = "H2D()" ID = "Button1" NAME = "Button1" ></ td >
    </ tr >
</ table >
</ body >
</ html >
二,UTF-8码
  Google 上搜索时,地址栏的字符编码和百度的不一样, Google 用的是 UTF-8 编码。同样是输入“工大后院”,在 Google 里是: %E5%B7%A5%E5%A4%A7%E5%90%8E%E9%99%A2”   转换成十进制形式是 24037;22823;21518;38498; ”。 QQ 的聊天对话框按 ALT ,然后分别依次输入这些数字,会出现“工大后院”四个字。
  下面的小脚本程序用来实现 utf-8 与字符的相互转换。
< html >
< head >
< script language = "javascript" >
// 生成 unicode ; 隔开
function toUnicode()
{
    var src=source.value;
    result.value = '' ;
    for ( var i=0; i<src.length; i++)
    result.value += src.charCodeAt(i) + '; ' ;
}
// 编码以 ; 隔开
function toText()
{
    var src=source.value.split( ';' );
    result.value = '' ;
    for ( var i=0; i<src.length; i++)
    result.value += String.fromCharCode(src[i]);
}
</ script >
</ head >
< body >
< table >
    < caption > 字符与 Unicode 编码相互转换(左边输入,右边输出) </ caption >
    < tr >
       < td >< textarea id = "source" rows = "10" cols = "50" NAME = "source" ></ textarea ></ td >
       < td >< textarea align = "center" id = "result" rows = "10" cols = "50"
           NAME = "result" ></ textarea ></ td >
    </ tr >
    < tr >
       < td align = "center" >< input type = "button" value = " 字符转换成 Unicode"
           onclick = "toUnicode()" ID = "Button1" NAME = "Button1" ></ td >
       < td align = "center" >< input type = "button" value = "Unicode 转换成字符 "
           onclick = "toText()" ID = "Button2" NAME = "Button2" ></ td >
    </ tr >
</ table >
</ body >
</ html >
对编码的知识,我还知道得很少,甚至还分不清 UTF-8 Unicode 。但上面的东西觉得很好玩,所以记下来。
 
 
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值