powerwind 发表于 2006-7-1 13:19

ALT + 数字 = ASCII + UTF-8 + Unicode ?

在QQ的群上你也许看到过这样的信息很神奇的事,按住 alt 键 ,依次输入 29482 然后松开 alt 你会看到你的名字。 不信就试一下!如果你是第一次看到,应该会照着做,然后发现上当了。可你同时也会好奇,为什么用ALT+数字可以打出中文的?这是什么编码?

下面分三部分为你一一道来。

一,ASCII码

我们知道ASCII码的字符数很少,怎么会有中文的呢?这个大概可以说那是ASCII的扩展吧!具体的编码我们不去深究,看看具体的例子吧。在百度输入一些字去搜索,在浏览器的地址栏就可以看到字符是经过编码的。比如输入“工大后院”四个字,就会看到这样。

字符编码后还加上了个“%”,而且那些数字是十六进制来的(B9A4B4F3BAF3D4BA),每四个十六进制数表示一个汉字。用 Windows 自带的计算器可以转换成十进制(每四个去转换,如 B9A4、B4F3、BAF3、D4BA,分别变成十进制为 47524、46323、47859、54458)。打开记事本,按ALT键不放,用右边的数字键盘输入 47524,然后松开ALT键,你会看到一个“工”字。想知道所有中文的ASCII码,怎么办?上百度,在搜索栏输入你要知道它ASCII码的中文,然后看看浏览器的地址栏,去除%这个符号。每四个就组成一个中文的ASCII码(注意此时是十六进制数)。

二,UTF-8码

这个码简略地说一句。同上所说,在Google上搜索时,它的编码是UTF-8码。
同样输入“工大后院”,结果是这样。

三,Unicode码

Unicode码可以说是了不起的编码,因为它要包含全世界的文字。
回到前面所说,在QQ的聊天对话框按ALT,然后输入29482,会看到某个字。而在记事本做同样的动作,输出的字却不一样。这是因为编码不同。例子就不再举了。以下是一个 javascript 的小代码,可以实现字符转换成Unicode码。将码复制,保存文件名后缀为 htm 。(注意,转换后是十进制数)


<html>
<head>
</head>
<script language="javascript">
//生成unicode以;隔开
function toUnicode()
{
        var src=source.value;
        if (src == '')
        {
                alert('请在文本框中输入字符');
                return;
        }
        result.value = '';
        for (var i=0; i<src.length; i++)
        result.value +=src.charCodeAt(i) + ';';

}
//编码以 ; 隔开
function toText()
{
        if (source.value == '')
        {
                alert('请在文本框中输入字符');
                return;
        }
        var src=source.value.split(';');
        result.value = '';
        for (var i=0; i<src.length; i++)
        result.value +=String.fromCharCode(src);

}
</script>
<body>
<p align="center">字符转换成Unicode编码</p>
<p align="center">
请在文本框输入字符串<br>
<textarea id="source" rows="10" cols="100"></textarea>
<p align="center">
<input type="button" value="字符转换成Unicode" onclick="toUnicode()">
<input type="button" value="Unicode转换成字符 " onclick="toText()">
<p align="center">
转换结果:<br>
<textarea align="center" id="result" rows="10" cols="100"></textarea>
</body>
</html>


[ 本帖最后由 powerwind 于 2006-7-1 16:09 编辑 ]

开水江 发表于 2006-7-1 13:41

学到了,嘿嘿,%C2%B7%B9%FD&cl=3

轻水惜寒 发表于 2006-7-1 14:05

D1A7B5BDD6AACAB6C1CB

Leon001 发表于 2006-7-1 15:45

进来学习下

powerwind 发表于 2006-7-1 15:56

感谢楼上经常路过我发的帖.

kuby905 发表于 2006-7-1 17:42

我也会

在QQ里玩这个游戏不错喔`~~嘿嘿`~~特别是对你的意中人表白的时候。。。嘿嘿`~我以前也做了一个Unicode码转换器,但是技术有限,只能一个字一个字查,还是楼主厉害,比我做的先进多了。嘻嘻~~~

以下是我整理在常用码:
我:25105   是:26159猪:29482   你:20320

系:31995   真:30495笨:31528   蛋:34057

个:20010   喜:21916欢:27426   爱:29233

想:24819衰:34928

游魂 发表于 2006-7-1 18:40

%CE%D2%D2%B2%C0%B4%D1%A7%CF%B0%C1%CB

J 发表于 2006-7-1 19:07

LZ的名字..

powerwind 发表于 2006-7-2 11:10

为了能方便读懂 2,3,7 楼几位的”密语“,转换十六进制如:%CE%D2%D2%B2%C0%B4%D1%A7%CF%B0%C1%CB成十进制,然后用ALT+数字显示出来,加上一段小程序。

<html>
<head>
<script language="javascript">
//以 % 隔开的十六进制转换成十进制
function H2D()
{
        if (source.value == '')
        {
                alert('请在文本框中输入字符');
                return;
        }
        var src=source.value.split('%');
        result.value = "\n双字节:";
        for (var i=1; i<src.length; i+=2)
                if(src!='')
                result.value+=parseInt(src+src,"16")+";";

        result.value+="\n\n单字节:";

        for (i=0; i<src.length; i++)
                if(src!='')
                result.value+=parseInt(src,"16")+";";
}
</script>
</head>
<body>
<p align="center">请在文本框输入字符串<br>
<textarea id="source" rows="10" cols="100"></textarea>
<p align="center">
<input type="button" value="16进制转换10进制" onclick="H2D()">
<p align="center">转换结果:<br>
<textarea align="center" id="result" rows="10" cols="100"></textarea>
</body>
</html>
页: [1]
查看完整版本: ALT + 数字 = ASCII + UTF-8 + Unicode ?