看下面2行的区别并复制下面第一行到任何文本编辑器中查看效果。
如何禁止网页打开时ie弹出的安全警告
Posted on
|
In
javascript
当直接双击打开一个有javascript代码的网页,ie6/ie7会在窗口顶部出现一条黄色警告信息,内容如下所示:
javascript demo scene [cool]
Posted on
|
In
javascript
用极少的javascript代码实现非常cool的效果,都用到了数学函数。
md5值相同的二个字符串
Posted on
|
In
ruby
utf-8 和 unicode 之间相互转换
Posted on
|
In
linux
UNICODE 基本知识
Unicode 及编码方式概述,这篇文章写得非常详细,不明白的细节可以参考那篇文章。
UTF-8 编码
UTF-8是UNICODE的实现方式之一。
UTF-8最大的一个特点,就是它是一种变长的编码方式。它可以使用 1~4 个字节表示一个符号,根据不同的符号而变化字节长度。
UTF-8的编码规则很简单,只有二条:
- 对于单字节的符号,字节的第一位设为
0,后面7位为这个符号的 UNICODE 码。因此对于英语字母,UTF-8 编码和 ASCII 码是相同的,因为首位是0,所以只能表示U+0000到U+007F范围内(十进制为0 ~ 127)。 - 对于 n 字节的符号(
n>1),第一个字节的前 n 位都设为1,第 n+1 位设为0,后面字节的前两位一律设为10。剩下的没有提及的二进制位,全部为这个符号的 UNICODE 码。
下表总结了编码规则,字母 x 表示可用编码的位。
| unicode 符号范围 | utf-8 编码方式 |
|---|---|
| 十六进制 | 二进制 |
| 0000 0000-0000 007F | 0xxxxxxx |
| 0000 0080-0000 07FF | 110xxxxx 10xxxxxx |
| 0000 0800-0000 FFFF | 1110xxxx 10xxxxxx 10xxxxxx |
| 0001 0000-0010 FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx |
从上表可以看到:
- 首字节前几位可以看出这个
UNICODE字符的长度,如:110开头的则说明这个字符是2BYTE的UNICODE字符;1110开头则是3BYTE的UNICODE字符;
- 需要注意的是
单字节字符第一位上是0,而不是10; - 而
10开始的字节被用于 2 个字节长度以上的UNICODE字符的非首字节上。
所以从0,10,110,1110这些字节点的设计利用上可以看到UTF-8编码设计非常巧妙。
以汉字严为例,演示如何实现UTF-8编码。
已知严的 UNICODE 是4e25(100111000100101),根据上表,可以发现4e25处在第三行的范围内(0000 0800-0000 ffff),因此"严"的UTF-8编码需要三个字节,即格式是"1110xxxx 10xxxxxx 10xxxxxx"。然后,从"严"的最后一个二进制位开始,依次从后向前填入格式中的x,多出的位补0。这样就得到了,"严"的UTF-8编码是 "11100100 10111000 10100101",转换成十六进制就是e4b8a5。
在 firebug 中测试中文"胡"字: