Archive for the ‘转载文章’ Category

韩寒:把魔术演成话剧

星期一, 15 2 月, 2010

转贴注:韩少这个新博刚发就被删了,特找来转贴一下

我看到有些刘谦的粉丝觉得刘谦的魔术只要让人觉得震撼就可以了,不用想太多,也不用知道太多,更不要想知道太多。事实上,我个人非常喜欢看刘谦。但是我不光不护主,而且我更是刨根问底栏目组的,我对我比较欣赏的对象的要求更加严格。

当我慢慢知道了真相以后,我觉得刘谦带给我的是巨大的遗憾,不是震撼。一个顶级的魔术师不应该这样表演魔术。可能春晚的舞台太大,所以刘谦认为观众就是电视机前的人。但我始终认为,所谓的近景魔术,真正的观众其实应该是坐在你桌子旁边的那几个人,这些人可以有一个是托,但不能全部都是托。这号称近景魔术的小品,果汁的杯子,定制的桌子,特制的硬币,无一是道具,这已经不符合近景魔术的规则了。 (更多…)

转贴:避免垃圾评论

星期三, 13 1 月, 2010

转自:http://www.google.com/support/webmasters/bin/answer.py?hl=cn&answer=81749

评论功能是网站管理员建立社区和读者群体的绝佳方法。 但遗憾的是,评论功能经常被垃圾评论发送者或其他居心不良者滥用,其中有许多人使用脚本或其他软件来生成和发布垃圾评论。 如果您收到过像广告或指向无关网站的随机链接,那么您就遭遇了垃圾评论。 下面提供了一些建议,有助于减少或防止您的网站中出现垃圾评论。

使用防垃圾评论工具

大多数网站开发工具,特别是博客工具,可能需要评论者证明他们是真的用户,而非讨厌的垃圾评论制造引擎。 您可能已经知道:一般情况下系统会向用户显示变形图片(通常称为 CAPTCHA),并会要求用户键入在图片中看到的字母或数字。 某些 CAPTCHA 系统还支持音频 CAPTCHA。 这是防止垃圾评论的一种非常有效的方法。 此过程可能会减少在您网页上随意留言的用户的数量,但是无疑会改善评论的质量。

打开评论审核功能

评论审核功能意味着只有在您手动检查和批准评论后,评论才会显示在您的网站中。 这表示您将在监控评论方面花费更多时间,但是它的确有助于改进访问者的用户体验。 如果您定期发布有争议的主题,这些主题常会引发热烈的讨论,那么多花点时间是值得的。 您通常可以在博客软件(例如 Blogger)中进行设置。

使用"nofollow"标记

几年前,Google 与 Yahoo! 和 MSN 都引入了"nofollow"HTML microformat,此属性已经被广泛采用。 rel="nofollow" 属性的所有链接都不会用于计算 PageRank 或确定您的网页与用户查询的相关性。 (例如,如果垃圾评论发送者在您的评论中加入这样一个链接:

<a href="http://www.example.com/">这是一个不错的网站!</a>

它将转换为:

<a href="http://www.example.com/" rel="nofollow">这是一个不错的网站! </a>

在计算 PageRank 时,这个新链接不会纳入考虑的范围。 这不会阻止垃圾评论,但可以避免通过 PageRank 时出现问题。

默认情况下,许多博客网站(例如 Blogger)会自动为所有发布的评论添加此属性。

禁止在评论中加入超链接

如果您可以访问服务器,则可能希望更改其配置以便从留言簿的评论链接中删除 HTML 标记。 垃圾评论发送者仍可以留言,但是不能够发布有效的超链接。

使用 robots.txt 或 META 标记拦截评论页

您可以使用 robots.txt 文件来阻止 Google 访问特定网页。 这不会阻止垃圾评论发送者留言,但意味着这些评论中的链接不会对网站产生负面影响。 例如,如果评论保存在 guestbook 子目录中,您可以向 robots.txt 文件添加以下内容:

    Disallow:/guestbook/

此语句会阻止 Google 将 guestbook 及任何子目录中的内容编入索引。

您还可以使用 META 标记来阻止对 http://www.example.com/article/comments 等单个选定网页的访问。 如以下标记:

    <html>    <head>    <META NAME="googlebot" CONTENT="noindex">

对启用留言簿或评论三思而后行

大量的垃圾评论不会让用户对网站有什么好印象。 如果此功能不会为您的用户增加很多价值,或者您没有时间定期监控留言簿或评论,可以考虑关闭这些功能。 大多数博客软件(例如 Blogger)会要求您关闭单个帖子的评论功能。

魔方贴纸的贴法教程

星期一, 30 11 月, 2009

常见的配色:

上黄-下白前蓝-后绿左橙-右红

 材料分类:
1、PET(纸质过胶)贴纸(如R记、东贤及国丙原配的),玩久了会脱皮褪色。玩家一般是不喜欢这种贴纸的。
2、PVC贴纸,就是广告店用的那种颜色贴纸,风吹雨打也不会褪色,魔友们一般喜欢这种贴纸,至于为何那些R记、东贤品牌魔方不用这种,据说是PVC贴纸不环保的原因。

单张得转贴法:
第一步:清理魔方表面的灰尘与油污!
    我们先把透明胶或转贴纸在魔方上反复做一个动作,贴上撕下,再贴上再撕下,这样做是为了把魔方表面的脏东西去除掉,使得我们贴上去的贴纸能更牢固。
第二步:贴贴纸!
    先把单个贴纸撕下来,把撕下来的贴纸的一个小角贴在边上。然后把单个贴纸摆放好位置后贴上,再把边角料抽走。

更多内容请参考:http://bbs.ztno.com/thread-8049-1-1.html

转贴:Dreamhost的email设置记录

星期日, 13 9 月, 2009

文章来源:http://www.lpfrx.com/archives/949/ (无聊空间)

==转贴开始=============================================
无聊时申请某个论坛的时候,需要用到不是外边的免费Email的邮箱,以为这论坛申请说说吧了,但一一尝试后还是不行,要有个不是免费email的邮箱,于是想到自己用开的网站空间的dreamhost提供邮件服务, 立刻跑去后台尝试设置了。
操作:
 
登录dreamhost.com的后台 =>看屏幕左边=> Domains => Manage Domain
=>看右边画面 => 选择我绑定了的lpfrx.com => dns =>
查看mail的三行:
1、mail A 208.97.xxx.xxx , 这里是指mail.lpfrx.com对应的A记录IP ,
2、mail mx 0 mx1.balanced.janky.mail.dreamhost.com.
3、webmail A 208.97.xxx.xxx
这些参数等会拿来填到域名管理商的mydns设置里的
=> 去你注册域名管理商的网页里,找lpfrx.com的管理里的mydns
1、设置二级域名mail.lpfrx.com对应A记录208.97.xxx.xxx ,这个域名拿来做smtp和pop的地址。
2、设置lpfrx.com的mx对应mx1.balanced.janky.mail.dreamhost.com.
记得最后那一个的点附号,这个是MX设置。
3、设置二级域名webmail.lpfrx.com对应A记录208.97.xxx.xxx , 这是邮件网页管理的入口
=>返回dreamhost的管理后台 => 屏幕左边 => mail => manage email
=> Create New Email Address , 这里指建立新用户,按操作填好用户和秘密 =>这样dreamhost那边的设置完毕了。
这样的lpfrx.com的smtp和pop就可以操作了,webmail也可以操作了, 还有outlook的所有设置跟一般的相同,不过有样需要注意的是用户名字是xxx@lpfrx.com ,不是xxx, xxx就是你在Dreamhost后台建立的用户名。
大该这样可以了,记录完毕,写得有点啰嗦。
==转贴结束=============================================
 
难怪,我刚开始设置我的MX记录成“lordong.cn mx 10 mail.lordong.cn.”(原来的国内主机是这样设置的),从别的邮箱发邮件过来老是失败(发出去的邮件对方都收到),现在已经按上面的说明改成“mail MX 0 mx1.sub3.homie.mail.dreamhost.com.”的后面部分了,1个小时后生效,但愿能成功,成功后再来更新。
 
2009-09-16 Update:刚开始都无法接收邮件,今天试了一下竟然成功了,看了一下之前收到的邮件,发现有一封邮件在配置当天的下午6点收到,说明此法可行,不过生效需要时间,我那一封成功接收的邮件是4个小时以后。(也话MX配置成mail.lordong.cn也能成功,一会试试)

转贴:CuteFTP 中显示隐藏文件,如.htaccess

星期六, 12 9 月, 2009

原贴链接:http://www.85hz.com/post/66/

Displaying hidden files or folders
By default, some servers will hide files with names starting with a period such as ".htaccess" or ".profile". 
To see hidden files on a remote site
Select the Site Manager tab.
Select the site with the hidden files.
Choose File > Properties from the menu.
Select the Actions tab.
Select Filter.
Select Enable filtering.
Select Enable server side filtering.
Enter-a in the Remote field.
Select OK.
Connect to your site.
 
显示隐藏文件和文件夹
通常情况下, 一些服务器上会隐藏着一些以 点 开始的的文件名, 常见的如 ".htaccess" 或 ".profile".
想要在远程服务器上显示这些隐藏文件
1、选择界面上的 [站点管理器] 标签
2、选择想要看到隐藏文件的远程服务器站点(单击它(就是按下鼠标左键, 再松开))
3、在菜单中选择 [文件] > [属性]
或按键盘上的 Alt + Enter
再或者右键单击它,选择 [属性]
4、选择 [操作] 标签
5、选择最下面的 [过滤]
6、选中 [启用过滤(E)] 和 [启用服务器端过滤(服务器应用过滤)(S)]
7、在 [远程过滤(M)] 右侧的输入框中输入:
-a
8、单击 [确定]
9、完成…

转贴:定位Windows XP蓝屏的方法

星期二, 4 8 月, 2009

最近我的Windows XP系统经常意外的蓝屏,本来想重装系统,但是由于需要重装的软件太多,于是决心查清楚蓝屏的具体原因,经过一番努力,终于找到了一个很好的蓝屏故障解决办法,下面和大家一起分享。

首先在讲解之前先做几个名词解释,以便大家理解本文:
第一步:打开“小内存转储”功能
右键点击“我的电脑”,选“属性→高级→启动和故障恢复→设置”,打开“启动和故障恢复”选项卡,在“写入调试  信息”下拉列表中选中“小内存转储(64KB)”选项,如图1。
小知识:小内存转储
内存转储是用于系统崩溃时,将内存中的数据转储保存在转储文件中,供给有关人员进行排错分析使用。小内存转储,就是只保存内存前64KB的基本空间数据的内存转储文件。这样可以节省磁盘空间,也方便文件的查看。
选好后点“确定”,这样操作系统在下次出现蓝屏时,就会记录下当时内存中的数据,并存储为dump文件,该文件存放在系统盘的minidump文件夹下。
小知识:Dump文件
Dump文件是用来给驱动程序编写人员调试驱动程序用的,这种文件必须用专用工具软件打开,比如使用WinDbg打开。
第二步:从微软的网站下载安装WinDbg
WinDbg是微软发布的一款优秀的源码级调试工具,可以调试Dump文件,这里我们用来查找蓝屏故障的原因,下载地址为:http://www.microsoft.com/whdc/devtools/debugging/installx86.mspx。这个过程就不赘述了。安装时,一路选“下一步”就行了。
第三步:使用WinDbg诊断蓝屏错误
系统再次出现蓝屏后重启,在minidump文件夹下会出现一个以日期为文件名的.dmp文件,这就是我们要分析的文件。接下来点击“开始菜单→程序→Debugging tools for windows(x86)-WinDbg”,打开WinDbg程序,点击程序窗口的“File→Open Crash Dump”,打开位于系统盘的minidump文件夹下的以日期为文件名的.dmp文件(图2)。
打开后程序就开始自动分析文件了,分析完后,看最下面,找到“Probably caused by”这一行,其后面的文件就是引起蓝屏的罪魁祸首。如图3。
第四步:解决蓝屏故障
我们对导致蓝屏的这个文件名在网上搜索,基本就知道是什么文件了,一般网上也有相关的解决办法,看看要删除些什么插件、打什么补丁或者重装软件等等。例如本中文分析出的360antiarp.sys文件,在网上一查,发现它是360安全卫士的ARP 防火墙驱动程序。由于该文件与本机的某些驱动程序冲突会引起电脑蓝屏。把360安全卫士的ARP 防火墙卸载,蓝屏问题就解决了。
编后:本文只能帮你找出导致蓝屏故障的元凶,具体的解决办法还得上网查找。导致故障的原因可能是.sys文件也有可能是.dll文件,如果故障是由查不到的.sys文件或者.dll文件引起的就要当心了,这些文件有可能是病毒,最好在安全模式下全盘杀毒试试看!
 
补充:设置的虚拟内存要放在系统盘才能输入dmp文件,否则输不出来。
 
摘自:http://www.05176.com/html/OS/xp/2009/0312/10548.html

转贴:英语和老外说的一样溜:好口语三关键

星期五, 31 7 月, 2009

如果你学多年,却依然不善表达、不善面谈、不善辩论、不善沟通、不善谈判、不善推广自己、不善经营自己;如果你专业技能突出,兢兢业业,成绩突出,却因为英语口语不好而失去了很多升职加薪的机会;如果你正在为英语口语问题而烦恼,焦虑,不知道如何下手,寻求突破……
英语口语的熟练,有三大关键步骤要做好。
第一步就是模仿
模仿的目的在于确保语音、语调的正确和提高表达的流利程度。模仿的时候,口齿要尽量清楚;在刚开始模仿时,速度不要过快,用慢速模仿,以便把音发到位,等到发音准确后,再加快速度,用正常的语速反复多说几遍,直到不用想就能用正常语速把句子轻松地说出来。对于自己读不准或比较生疏的单词要反复多听几遍,然后再反复模仿,逐个单词地练习,在那些常用词上下功夫,尽量模仿得像一些。
第二步就是复述
学英语离不开记忆,记忆不是死记硬背,要有灵活性。复述就是一种很好的自我训练口语,记忆单词和句子的方法。复述有两种常见的方式。一是阅读后复述,二是听录音后复述。第二种方式更好些,这种方式既能练听力,又可以练口语表达能力。同时可以提高注意力的集中程度,提高听的效果,而且还可以提高记忆力,克服听完就忘的毛病。
复述要循序渐进,可以先从一两句开始,听完后用自己的话(英语)把所听到的内容说出来。在刚开始练习时,因语言表达能力、技巧等方面原因,往往复述接近于背诵,但经过训练后,就会由”死”到”活”。在保证语言正确的前提下,复述可有越来越大的灵活性,比如改变句子结构,删去一些不常用或太难的东西,长段可以缩短,甚至仅复述大意或作内容概要。
复述的内容也要有所选择。一般来说,所选资料的内容要具体生动,有明确的情节,生词量不要太大。可选那些知识性强的小短文。开始时可以练习复述小故事,有了基础后,复述的题材可以进行扩展。
第三步就是也就英语描述
流畅的英语口语最高的标准是强大的描述能力。仅仅有正确的发音和复述是远远不够的;如果你仅仅具备这两方面的能力,那么你就仅仅是个传声筒而已,你说的永远都是别人的语言。要形成你自己的话语系统,充分正确表达自己的思想,你就需要一种强大的描述能力。只要大家模仿,复述和超级描述法融合在一起。在潜移默化之中,在循序渐进之中,你就会积累大量实用的英语表达,同时掌握了复述和描述的能力,从而达到流畅沟通的境界。

来源:http://desu.5d6d.com/viewthread.php?tid=2921

adsl modem 账号和密码(全)

星期四, 23 7 月, 2009

1、全向QL1680 IP地址10.0.0.2,用户名:admin,密码:qxcomm1680,管理员密码:qxcommsupport。
全向QL1880 IP地址192.168.1.1,用户名:root,密码:root
全向QL1688 IP地址10.0.0.2,用户名为admin;密码为qxcomm1688
2、TP-LINK TD-8800在IE输入192.168.1.1,户名admin,密码admin
3、合勤zyxel 642 在运行输入telnet 192.168.1.1 密码1234
4、Ecom ED-802EG 在IE输入192.168.1.1,用户名和密码都为root
5、神州数码6010RA,在IE输入192.168.1.1 用户名为ADSL,密码为ADSL1234
6、华为SmartAX MT800的初始IP是192.168.1.1,用户名和密码都为admin,恢复默认配置的方法有两种,一种是连续按MODEM背后的RESET键三次,另一种是在配置菜单的SAVE&REBOOT里选择恢复默认配置。
7、伊泰克:IP:192.168.1.1 用户名:supervisor 密码:12345
8、华硕IP:192.168.1.1 用户名:adsl 密码:adsl1234
9、阿尔卡特 192.168.1.1 一般没有密码
10、同维DSL699E 192.168.1.1 用户名:ROOT 密码:ROOT
11、大亚DB102 192.168.1.1 用户名:admin 密码:dare 高级设置://192.168.1.1/doc/index1.htm
12、WST的RT1080 192.168.0.1 username:root password:root
13、WST的ART18CX 10.0.0.2 username:admin password:conexant
username:user
password:password
14、实达V3.2 root root V5.4 root grouter
15、泛德 admin conexant
16、东信Ea700 192.168.1.1用户名:空 密码:password
17、broadmax的hsa300a 192.168.0.1 username:broadmax password:broadmax
18、长虹ch-500E 192.168.1.1 username:root password:root
19、重庆普天CP ADSL03 192.168.1.1 username:root password:root
20、台湾突破EA110 RS232:38400 192.168.7.1 username:DSL psw:DSL
21、etek-td的ADSL_T07L006.0 192.168.1.1 User Name: supervisor Password: 12345
忘记密码的解决办法:
使用超级终端的Xmodem方式重写Vxworks.dlf,密码恢复成:12345
22、GVC的DSL-802E/R3A 10.0.0.2 username:admin password:epicrouter username:user
password:password
23、科迈易通km300A-1 192.168.1.1 username: password:password
科迈易通km300A-G 192.168.1.1 username:root password:root
科迈易通km300A-A 192.168.1.1 username:root or admin password:123456
24、sunrise的SR-DSL-AE 192.168.1.1 username:admin password:0000
sunrise的DSL-802E_R3A 10.0.0.2 username:admin password:epicrouter
username:user password:password
25、UTStar的ut-300R 192.168.1.1 username:root or admin password:utstar

华硕 系列
6000EV A/E A/J A/G1系列 登陆地址:192.168.1.1 用户名:adsl 密码:adsl1234 个别使用帐号密码都是root

实达 系列 登陆地址:192.168.10.1
2110ehr v3.20 用户:admin 密码:conexant
2110ehr v3.21 用户:admin 密码:conexant
2110ehr v3.51 用户:admin 密码:conexant
2110ehr v4.5 用户:root 密码:grouter
2110eh v3.51 用户:admin 密码:starnetadsl (中文web界面)

港湾HA1000-TR 登陆地址:192.168.1.1 用户名:admin密码:harbour

GNET BB0060/BB0060A系列 登陆地址:192.168.7.1 帐号密码都是DSL
solwise 110/130系列 登陆地址:192.168.7.1 帐号密码都是root
tenda 专用路由器
IP 192.168.8.1
password amdin
自带交换机
伊泰克
http://192.168.1.1
用户名:supervisor
密码:12345

华硕
http://192.168.1.1
用户名:adsl
密码:adsl1234

阿尔卡特
http://192.168.1.1
一般没有密码

同维DSL699E
http://192.168.1.1
用户名:ROOT
密码:ROOT

大亚DB102
http://192.168.1.1
用户名:admin
密码:dare
高级设置界面:http://192.168.1.1/doc/index1.htm

WST的RT1080
http://192.168.0.1
username:root
password:root

WST的ART18CX
http://10.0.0.2
username:admin
password:conexant
username:user
password:password

全向qxcomm1688
http://192.168.1.1
高端设置密码是:qxcommsuport
全向qxcomm1680
http://192.168.1.1
登陆ADSL的密码是:qxcomm1680
ALT+A ALT+P

实达
V3.2 root
root
V5.4 root
grouter

泛德
admin
conexant

东信Ea700
http://192.168.1.1
用户名:空
密码:password

broadmax的hsa300a
http://192.168.0.1
username:broadmax
password:broadmax

长虹ch-500E
http://192.168.1.1
username:root
password:root

重庆普天CP ADSL03
http://192.168.1.1
username:root
password:root

台湾突破EA110
RS232:38400
http://192.168.7.1
username:DSL
psw:DSL

etek-td的ADSL_T07L006.0
http://192.168.1.1
User Name: supervisor
Password: 12345
忘记密码的解决办法:
使用超级终端的Xmodem方式重写Vxworks.dlf,密码恢复成:12345

GVC的DSL-802E/R3A
http://10.0.0.2
username:admin
password:epicrouter
username:user
password:password

科迈易通km300A-1
http://192.168.1.1
username:
password:password
科迈易通km300A-G
http://192.168.1.1
username:root
password:root
科迈易通km300A-A
http://192.168.1.1
username:root or admin
password:123456

sunrise的SR-DSL-AE
http://192.168.1.1
username:admin
password:0000
sunrise的DSL-802E_R3A
http://10.0.0.2
username:admin
password:epicrouter
username:user
password:password

UTStar的ut-300R
http://192.168.1.1
username:root or admin
password:utstar
中兴ZXDSL831
http://192.168.1.1
username:ZXDSL
password:ZXDSL

金浪
http://192.168.1.1
username:root
password:root
NOKIA M1122(T66280)
IP:192.168.1.1
USER:admin
PSW:nokia
ZyXEL 600
telnet 192.168.1.1
密码 1234
中达通CT 500
IP:192.168.1.1
用户名:root
密码:12345
天邑HASB-100A
IP:10.0.0.2
用户名:admin\user
密码:conexant epicrouter\password

艾玛701G
192.168.101.1
ADMIN
ADMIN
艾玛701H
192.168.1.1
admin
epicrouter
zyxel p642m,p642-s: admin 1234

zyxel p642-sc: huaqin 1234
邮通 ar800c2-e
10.0.0.2
用户名是admin
密码是epicrouter
明基BenQ ASR688
使用交叉网线将PC网卡与ASR688背板上RJ-45口相连,在网上邻居属性里将PC的IP地址设置为192.100.100.1,重新启动计算机。
在开始->运行里写入telnet 192.100.100.100,点击确定,进入登陆界面

用户名user
密码benq1234
伊泰克
2018 用户:空白 密码:USB852 ip:192.168.1.1
华为 SmartAX MT800
用户名admin
密码admin
LG TOPS
用户名:admin
密码 :admin
东信EA700:
用户名:root
password:root

万利达
10.0.0.2
用户:admin
passwd:epicrouter

台湾台林通信产AFC-500/600,用户名ADMIN密码12345678登陆IP192.168.0.1
合勤PRESTICE600
IP:192.168.1.1
密码:1234
huawei800的是:登陆帐号:admin密码:admin
神州数码/华硕:
用户名:adsl 密码:adsl1234
全向:
用户名:root 密码:root
普天:
用户名:putian 密码:123456
e-tek
用户名:admin 密码:12345
zyxel
用户名:anonymous 密码:1234
北电
用户名:anonymous 密码:12345
大恒
用户名:admin 密码:admin
大唐
用户名:admin 密码:1234
斯威特
用户名:root 密码:root
用户名:user 密码:user
中兴
用户名:adsl 密码:adsl831
(中兴的adsl的密码前面为adsl,后面为型号,比如中兴831,密码就是adsl831)

环宇的DSL699E:
用户名:root
密 码:root
友讯网络D-Link DSL500
admin
admin
d-link:dsl-500g
ip:http://10.1.1.1
用户名:admin 密
码:admin

天邑100a管理员:admin 密码: epicrouter 或 conexant

阿尔法   192.168.18.1
用户:admin passwd:admin

转贴来源:http://www.360doc.com/content/070615/15/25127_559838.html

转贴:当飞信的API遇上GAE的URL Fetch API

星期一, 27 4 月, 2009

(原创作者:Java Yu,原文链接:http://www.javayu.com?p=2489)

这几天一直在想怎么使用GAE来实现一个自动短信通知功能,由于google的免费短信服务已经关闭,而飞信的python库又不怎么可能放到GAE上面。最后找到了这玩意:http://sms.api.bz/ 它是中国移动飞信的一个第三方的API入口(不能保证安全性和私密性),通过GET方式发送请求就可以实现发送飞信的功能。

具体的url如下:
http://sms.api.bz/fetion.php?username=13800138000&password=123456&sendto=13800123001&message=Hello

其中username的值是发送方的手机号,password是发送方的飞信密码,sendto要发送目标的手机号码,而message就是飞信中的内容。上面的那个URL就是用来向13800123001内容为”Hello”的飞信,要注意的是,发送方和接收方比较已经是飞信好友。

有了这玩意,配合一下GAE的URL Fetch API,就可以实现自动飞信通知的功能:
from google.appengine.api import urlfetch
def sendmessage(number,message):
    url = "http://sms.api.bz/fetion.php?username=13800138000&password=123456&sendto="
    url = url+number+"&message="+message
    urlfetch.fetch(url, payload=None, method=urlfetch.GET, headers={},allow_truncated=False, follow_redirects=False) 

要发送飞信的时候,就通过调用sendmessage这个函数就行了,number是指目标的手机号,而message是要发送的内容。

转贴:字符编码笔记:ASCII,Unicode和UTF-8

星期五, 10 4 月, 2009

作者:阮一峰 发表于 2007年10月28日

今天中午,我突然想搞清楚Unicode和UTF-8之间的关系,于是就开始在网上查资料。

结果,这个问题比我想象的复杂,从午饭后一直看到晚上9点,才算初步搞清楚。

下面就是我的笔记,主要用来整理自己的思路。但是,我尽量试图写得通俗易懂,希望能对其他朋友有用。毕竟,字符编码是计算机技术的基石,想要熟练使用计算机,就必须懂得一点字符编码的知识。

1. ASCII码

我们知道,在计算机内部,所有的信息最终都表示为一个二进制的字符串。每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个字节(byte)。也就是说,一个字节一共可以用来表示256种不同的状态,每一个状态对应一个符号,就是256个符号,从0000000到11111111。

上个世纪60年代,美国制定了一套字符编码,对英语字符与二进制位之间的关系,做了统一规定。这被称为ASCII码,一直沿用至今。

ASCII码一共规定了128个字符的编码,比如空格“SPACE”是32(二进制00100000),大写的字母A是65(二进制01000001)。这128个符号(包括32个不能打印出来的控制符号),只占用了一个字节的后面7位,最前面的1位统一规定为0。

2、非ASCII编码

英语用128个符号编码就够了,但是用来表示其他语言,128个符号是不够的。比如,在法语中,字母上方有注音符号,它就无法用ASCII码表示。于是,一些欧洲国家就决定,利用字节中闲置的最高位编入新的符号。比如,法语中的é的编码为130(二进制10000010)。这样一来,这些欧洲国家使用的编码体系,可以表示最多256个符号。

但是,这里又出现了新的问题。不同的国家有不同的字母,因此,哪怕它们都使用256个符号的编码方式,代表的字母却不一样。比如,130在法语编码中代表了é,在希伯来语编码中却代表了字母Gimel (ג),在俄语编码中又会代表另一个符号。但是不管怎样,所有这些编码方式中,0—127表示的符号是一样的,不一样的只是128—255的这一段。

至于亚洲国家的文字,使用的符号就更多了,汉字就多达10万左右。一个字节只能表示256种符号,肯定是不够的,就必须使用多个字节表达一个符号。比如,简体中文常见的编码方式是GB2312,使用两个字节表示一个汉字,所以理论上最多可以表示256×256=65536个符号。

中文编码的问题需要专文讨论,这篇笔记不涉及。这里只指出,虽然都是用多个字节表示一个符号,但是GB类的汉字编码与后文的Unicode和UTF-8是毫无关系的。

3.Unicode

正如上一节所说,世界上存在着多种编码方式,同一个二进制数字可以被解释成不同的符号。因此,要想打开一个文本文件,就必须知道它的编码方式,否则用错误的编码方式解读,就会出现乱码。为什么电子邮件常常出现乱码?就是因为发信人和收信人使用的编码方式不一样。

可以想象,如果有一种编码,将世界上所有的符号都纳入其中。每一个符号都给予一个独一无二的编码,那么乱码问题就会消失。这就是Unicode,就像它的名字都表示的,这是一种所有符号的编码。

Unicode当然是一个很大的集合,现在的规模可以容纳100多万个符号。每个符号的编码都不一样,比如,U+0639表示阿拉伯字母Ain,U+0041表示英语的大写字母A,U+4E25表示汉字“严”。具体的符号对应表,可以查询unicode.org,或者专门的汉字对应表

4. Unicode的问题

需要注意的是,Unicode只是一个符号集,它只规定了符号的二进制代码,却没有规定这个二进制代码应该如何存储。

比如,汉字“严”的unicode是十六进制数4E25,转换成二进制数足足有15位(100111000100101),也就是说这个符号的表示至少需要2个字节。表示其他更大的符号,可能需要3个字节或者4个字节,甚至更多。

这里就有两个严重的问题,第一个问题是,如何才能区别unicode和ascii?计算机怎么知道三个字节表示一个符号,而不是分别表示三个符号呢?第二个问题是,我们已经知道,英文字母只用一个字节表示就够了,如果unicode统一规定,每个符号用三个或四个字节表示,那么每个英文字母前都必然有二到三个字节是0,这对于存储来说是极大的浪费,文本文件的大小会因此大出二三倍,这是无法接受的。

它们造成的结果是:1)出现了unicode的多种存储方式,也就是说有许多种不同的二进制格式,可以用来表示unicode。2)unicode在很长一段时间内无法推广,直到互联网的出现。

5.UTF-8

互联网的普及,强烈要求出现一种统一的编码方式。UTF-8就是在互联网上使用最广的一种unicode的实现方式。其他实现方式还包括UTF-16和UTF-32,不过在互联网上基本不用。重复一遍,这里的关系是,UTF-8是Unicode的实现方式之一。

UTF-8最大的一个特点,就是它是一种变长的编码方式。它可以使用1~4个字节表示一个符号,根据不同的符号而变化字节长度。

UTF-8的编码规则很简单,只有二条:

1)对于单字节的符号,字节的第一位设为0,后面7位为这个符号的unicode码。因此对于英语字母,UTF-8编码和ASCII码是相同的。

2)对于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

下面,还是以汉字“严”为例,演示如何实现UTF-8编码。

已知“严”的unicode是4E25(100111000100101),根据上表,可以发现4E25处在第三行的范围内(0000 0800-0000 FFFF),因此“严”的UTF-8编码需要三个字节,即格式是“1110xxxx 10xxxxxx 10xxxxxx”。然后,从“严”的最后一个二进制位开始,依次从后向前填入格式中的x,多出的位补0。这样就得到了,“严”的UTF-8编码是“11100100 10111000 10100101”,转换成十六进制就是E4B8A5。

6. Unicode与UTF-8之间的转换

通过上一节的例子,可以看到“严”的Unicode码是4E25,UTF-8编码是E4B8A5,两者是不一样的。它们之间的转换可以通过程序实现。

在Windows平台下,有一个最简单的转化方法,就是使用内置的记事本小程序Notepad.exe。打开文件后,点击“文件”菜单中的“另存为”命令,会跳出一个对话框,在最底部有一个“编码”的下拉条。


面有四个选项:ANSI,Unicode,Unicode big endian 和 UTF-8。

1)ANSI是默认的编码方式。对于英文文件是ASCII编码,对于简体中文文件是GB2312编码(只针对Windows简体中文版,如果是繁体中文版会采用Big5码)。

2)Unicode编码指的是UCS-2编码方式,即直接用两个字节存入字符的Unicode码。这个选项用的little endian格式。

3)Unicode big endian编码与上一个选项相对应。我在下一节会解释little endian和big endian的涵义。

4)UTF-8编码,也就是上一节谈到的编码方法。

选择完”编码方式“后,点击”保存“按钮,文件的编码方式就立刻转换好了。

7. Little endian和Big endian

上一节已经提到,Unicode码可以采用UCS-2格式直接存储。以汉字”严“为例,Unicode码是4E25,需要用两个字节存储,一个字节是4E,另一个字节是25。存储的时候,4E在前,25在后,就是Big endian方式;25在前,4E在后,就是Little endian方式。

这两个古怪的名称来自英国作家斯威夫特的《格列佛游记》。在该书中,小人国里爆发了内战,战争起因是人们争论,吃鸡蛋时究竟是从大头(Big-Endian)敲开还是从小头(Little-Endian)敲开。为了这件事情,前后爆发了六次战争,一个皇帝送了命,另一个皇帝丢了王位。

因此,第一个字节在前,就是”大头方式“(Big endian),第二个字节在前就是”小头方式“(Little endian)。

那么很自然的,就会出现一个问题:计算机怎么知道某一个文件到底采用哪一种方式编码?

Unicode规范中定义,每一个文件的最前面分别加入一个表示编码顺序的字符,这个字符的名字叫做”零宽度非换行空格“(ZERO WIDTH NO-BREAK SPACE),用FEFF表示。这正好是两个字节,而且FF比FE大1。

如果一个文本文件的头两个字节是FE FF,就表示该文件采用大头方式;如果头两个字节是FF FE,就表示该文件采用小头方式。

8. 实例

下面,举一个实例。

打开”记事本“程序Notepad.exe,新建一个文本文件,内容就是一个”严“字,依次采用ANSI,Unicode,Unicode big endian 和 UTF-8编码方式保存。

然后,用文本编辑软件UltraEdit中的”十六进制功能“,观察该文件的内部编码方式。

1)ANSI:文件的编码就是两个字节“D1 CF”,这正是“严”的GB2312编码,这也暗示GB2312是采用大头方式存储的。

2)Unicode:编码是四个字节“FF FE 25 4E”,其中“FF FE”表明是小头方式存储,真正的编码是4E25。

3)Unicode big endian:编码是四个字节“FE FF 4E 25”,其中“FE FF”表明是大头方式存储。

4)UTF-8:编码是六个字节“EF BB BF E4 B8 A5”,前三个字节“EF BB BF”表示这是UTF-8编码,后三个“E4B8A5”就是“严”的具体编码,它的存储顺序与编码顺序是一致的。

9. 延伸阅读

* The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets(关于字符集的最基本知识)

* 谈谈Unicode编码

* RFC3629:UTF-8, a transformation format of ISO 10646(如果实现UTF-8的规定)

(完)