Submitted by gouki on 2010, June 3, 1:27 PM
SAE是Sina App Engine(新浪应用引擎)的缩写,SAE是一个分布式web应用开发运行的服务平台,其不仅仅包含创建、部署web应用的简单交互,更涉及一整套大规 模分布式服务的解决方案。用户通过SAE可以方便的创建web应用、定制web应用、开发web应用、部署web应用、切换线上版本、删除应用,大大节省 了开发者的开发成本和运维成本。
作为大规模的分布式服务,云服务是未来的趋势,我们立志于走在云计算领域的研究开发前列,为广大web开发者提供基于云计算的更方便、快捷、可靠、节省的 应用开发运行平台,同时SAE也着眼解决新浪公司内部的资源冗余问题,为公司内部大量的web应用提供可靠的运行平台。
上面这段内容来自于SAE官方网站。云服务云服务,当然是用云来服务。GAE其实也是一个类似的玩意,其实SAE是在GAE出来了几年后才发展起来的东西,相比于GAE来说,功能是要差了一点,不过他是目前为止支持PHP最好的云。要知道google的GAE只支持java和python,虽然通过各种各样的扩展可以使得他支持jRuby,jphp之类的,但毕竟不是原生支持,而SAE才是
开通后做了一个小东西。就是PING自己的博客,当发现取不到meta数据时,就发封邮件给我。因为监控宝是半小时,我在SAE上可以跑5分钟一次。呵呵(既能刷PV,又能监控,多好啊。)
代码很简单。
PHP代码
- $url = 'http://www.neatstudio.com';
- $tags = @get_meta_tags( $url );
- if(isSet( $tags['generator'] ) && trim($tags['generator']) == 'gouki,editplus'){
-
- }else{
- require_once( 'saemail.class.php' );
- $smail = new saemail();
- $title = sprintf("[%s]无法访问",date( 'Y-m-d H:i:s' ));
- $smail->quickSend( '13800138000@139.com' , $title , '无内容' , '******@sina.com' , '******' );
- }
然后修改config.yaml,増加cron(其实原来的config.yaml已经有cron了,只是注释掉了)
修改后,为了防止被WEB访问,再加一个
XML/HTML代码
- handle:
- - hostaccess: if(path ~ "/cron目录/") allow "10.0.0.0/8"
表明只允许内网访问,不允许WEB访问,现在直接访问的时候就是403了。HOHO
过了半小时,收到了一封MAIL(因为在测试的时候,我是成功就发)
一切就是这样简单
Tags: sae, php, cron
PHP | 评论:3
| 阅读:26553
Submitted by gouki on 2009, September 16, 4:57 PM
本文乃是从google搜索而来,缘由是有群友问,1067怎么处理。。。
于是google了一下,因为我记得好象是没有指定default_file。。
结果,发现1067错误有这么多的原因啊?来源于:http://www.wzsky.net/html/Program/Mysql/100436.html
原文如下:
本文例举了MySQL的1067错误的多种解决方法,以便大家遇到该错误时可以快速参考解决。
内容:
*************
1
安装MYSQL后更改了ROOT的密码后用
net startmysql
启动时我就遇到了这样的问题.使用以下命令后
c:\mysql\bin\mysqladmin-u root -p shutdown
再net start mysql就没有这个错误提示了!
*************
2
MySQL的1067错误
Q:我的Mysql碰到了 1067 错误
错误信息为:
A system error has occurred.
System error 1067 has occurred.
The process terminated unexpectedly.
A:在我的机上的解决办法是:
修改%windir%\my.ini,增加
[mysqld]
#设置basedir指向mysql的安装路径
basedir=D:\Program\Tools\mysql
datadir=D:\Program\Tools\mysql\data
*************
3
已经弄好了!!!
好像是这样……
mysql_install_db 脚本只是在初次安装时才需要运行一次,之后就不用再运行了,不知道是不是这么回事.我把mysql.server拷贝至/etc/rc.d/init.d /中,运行chkconfig mysql.server,至此mysql服务器每次开机自动启动,只要设置好PATH,在命令行上输入mysql就一切搞定!
看来摸索的过程实在是痛苦啊,这已经折磨我好几天了……
*************
4
问:我的Mysql碰到了 1067 错误
错误信息为:
A system error has occurred.
System error 1067 has occurred.
The process terminated unexpectedly.
答:
解决办法:
1.检查你的Mysql目录有没有给系统的System用户权限。
2.删除掉你的 %WINDOWS%/my.ini 文件。
3.检查你的 c:/my.cnf 文件配置是否正确。
*************
5
【☆☆☆ MySql概要说明 ☆☆☆】
MySql 的默认安装目录是c:mysql,安装结束后没有任何提示信息说安装结束,请点Finish按钮之类的话,直接就退出了。如果需要安装到其他目录,建议先 安装到c:mysql,然后再整个目录move到自己希望的地方,例如移动到d:mysql 之后,需要编辑 d:mysqlmy-example.cnf (*.cnf的文件在Windows 2000中会被注册成为 SpeedDial文件,在资源管理器中无法操作,要用命令行来启动notepad编辑,例如运行notepadd:mysqlmy- example.cnf ,但是这个文件是UNIX系统下的文本文件格式,在notepad中不能正确换行,可以用write打开编辑,
或者用write打开后保存一次,再用notepad就可以编辑了。)找到basedir一行,去掉前面的“#”号注释,将后面的路径改为移动后的目录(目录分隔符要用斜线而不是反斜线),然后另存为:c:my.cnf
用服务方式启动的MySql如果用 net stop mysql 来停止,会得到一条 出错消息,例如:
C:>net stop mysql
MySql 服务正在停止.
系统出错。
系统发生 1067 错误。
进程意外终止。
MySql 服务已成功停止。
这没有关系,MySql确实已经停止了。但是假如不希望看到任何出错消息
的话,可以用以下的命令来停止:
C:>mysqlbinmysqladmin -u root shutdown
如果没有任何提示信息,说明MySql已经成功停止了。
需要说明的是MySql虽然号称安装简单,易于使用,但是这毕竟是基于SQL的数据库管理系统,所以如果不是对SQL十分精通的话恐怕也不能拿它来做什么
**************
6
mysql服务无法启动的解决方法
mysql服务无法启动
我的操作系统是 win xp
无论安装何版本的mysql,在管理工具的服务中启动mysql服务时都会在中途报错
内容为:在 本地计算机 无法启动mysql服务 错误1067:进程意外中止
经过多方求教,得解决方法如下
查找系统(后来验证应该为windows目录)目录下的my.ini文件,编辑内容(如果没有该文件,则新建一个),至少包含basedir,datadir这两个基本的配置。
[mysqld]
# set basedir to installation path, e.g., c:/mysql
# 设置为MYSQL的安装目录
basedir=D:/www/WebServer/MySQL
# set datadir to location of data directory,
# e.g., c:/mysql/data or d:/mydata/data
# 设置为MYSQL的数据目录
datadir=D:/www/WebServer/MySQL/data
另外,要主意
[WinMySQLadmin]
Server=D:/www/WebServer/MySQL/bin/mysqld-nt.exe
user=root
password=xxxxxxxx
#以上是设置WinMySQLadmin的配置
[Client]
user=root
password=xxxxxxxx
hehe~ 解决了
**************
7
刚刚弄好Mysql 『关键字 1067错误』
比较郁闷,竟然没有想到安装个Mysql也会出错,错误代码是1067 安装卸载了好几次,就是不行,而且把一些禁用了的服务都打开了,但是还是不行。最后我是这样解决的:
在C:\windows里找一找my.ini 然后删除 然后再启动winmysqladmin.exe界面配置mysql,保存my.ini就可以了 启动mysql试试 呵呵
***************
8
mysql 错误 1067: 进程意外终止
这 个问题困扰了一个早晨,非常郁闷!以前我在装mysql的时候从来没有遇到过,可是现在庄这个高版本的就有问题了,我换我装过的低版本的还是一样的问题 (最关键的是操作系统都是一样的)。在windows2000的服务里面启动mysql服务可是总是弹出“错误 1067: 进程意外终止”!
我 感觉问题在配置文件,于是就重新写了my.ini,启动还是一样的效果,我在google上查找无果,崩溃状态!就在此时眼前一亮,一位高人的指点是我豁 然开朗,你的ini文件有否放到windows目录下,我从个人目录的windows目录下,将其拷贝到系统windows目录下,启动服务,ok!!!
Tags: mysql, 错误, 1067
Baby | 评论:0
| 阅读:20800
Submitted by gouki on 2009, September 12, 11:06 PM
几天没见小朋友,他醒来的时候,看到我很激动啊。可惜,还是不愿意叫爸爸。
晚上吃饭 的时候,问他想吃南瓜不,想吃?先叫爸爸,结果真的就叫出来了。。。。原来平时都在偷懒啊。
晚上带他去社区健身的地方进行健身,也是非常激动。
现在可以脱手走路了(虽然走的不远,看来,离会走路的时间不远了)
期待
Misc | 评论:0
| 阅读:16451
Submitted by gouki on 2009, September 11, 12:36 PM
1.小时候看课本说月球上能看到长城
——事实上如同人从50米外的距离看一根头发丝……
2、几个科学家小时候的故事
牛顿同志和苹果的故事
——关于牛顿和他的苹果是伏尔泰编的,据说他是听牛顿的侄女说的,当然牛顿的所有手稿里没提到那只苹果。
达芬奇小朋友和鸡蛋的故事
——达芬奇和爱因斯坦可爱的童年生活作者不明,不过可以确定的是达芬奇成为韦罗基奥弟子的时候已经13、14岁而且有一定绘画功底了。
爱因斯坦同学和小凳子的故事
——然后爱因斯坦小时候成绩还行,就是有点偏科,干嘛非说人家小时候傻呢……
华盛顿和樱桃树的故事
——华盛顿和他老爸的樱桃树是某米国出版商制造出来的儿童文学……
3、瓦特看见水壶烧开产生灵感发明蒸汽机——蒸汽机在瓦特出生前有,他只不过改良了而已……
4、菠菜富豪含铁元素——菠菜铁元素确实比其他蔬菜高那么一点点,关键是当初科学家点错小数点,所以才有了大力水手的动画片。
5、兔子应该吃胡萝卜——养过兔子都知道,很少有兔子吃。
6、鱼翅燕窝营养丰富——居然真的会有人相信鲨鱼鳍和鸟口水有什么营养价值……燕窝除了鸟口水之外,MS还有半消化状态的鱼虾,实际营养不如粉条和木耳!
7、怀孕不能养猫,有弓型虫——只要去宠物医院做次排虫测试就成,医生为图省事说的,不只是猫、猪牛羊等触类都能感染弓型虫。而且比例上来讲比猫不知道高多少……而且猫一生也只感染一次弓型虫。绝大多数感染过弓型虫的人一辈子都没养过猫。
8、锂电池前三次充电要满12小时——以前的电池是需要充分充电,用来激活,现在都是锂电池了,是不需要这样做的。
9、电视电影里常见的,某B社会“专家”拿根手指蘸掉白色粉末尝尝就知道是viper
——如果真这样做……那是找死,纯度越高死的越快。
10、天才就是99%的汗水1%的灵感
——原话是“天才就是99%的汗水1%的灵感,但这1%的灵感远远比99%的汗水重要”。
11、老师常用‘吾生有崖,而知无崖’教育我们要好好读书
——其实……原文是“吾生有崖,而知无崖,以有崖求无崖,殆哉矣”……完全相反。
12、感冒是由感冒病毒引起的,吃消炎药可以治感冒
——晕了
13、吃麦当劳、肯德基索要发***票是爱国,去家乐福、沃尔玛索要发***票他们就不能偷税了--------餐饮业纳的是营业税,而麦肯那种快餐业都是专用的税控机器。人家纳不纳税,纳多少,跟你要的那个发***票是没任何联系的。要发***票的唯一用处就是可以刮奖。
14、1999年7月……KB大王从天降
——这个不用证明了吧……
15。“这世界上最遥远的距离……你却不知道我爱你”是泰戈尔大师写的
——是张小娴女士的杰作。
16、不存在一个掷骰子的上帝——爱因斯坦
——原句为‘上帝不掷骰子’这话主要针对量子理论……爱因斯坦毕竟是犹太人。“上帝不掷骰子”是爱因斯坦对海森堡测不准原理的评价。当时年轻的物理学家海森堡提出了测不准原理,即不可能同时准确测量一个粒子的动能和势能,对动能的测量会影响到势能,反之亦然。当时世界物理学界为之一片哗然,很多重量级的物理学家都反对这个理论,就连海森堡最崇拜的偶像爱因斯坦也反对。所以说出了这样一句话,爱因斯坦认为世界是可知的,是可以被描述的。年轻的海森堡承受了太大的压力,他甚至哭出声来。可是时间证明了真理,现在测不准原理已经成为量子物理的基本定律之一。
17、中国是一只睡狮,一旦它醒来,整个世界都会为之颤抖——拿破仑
——原话是‘中国是一只睡狮,一旦它醒来,整个世界都会为之颤抖。……它在沉睡着,谢谢上帝,让它睡下去吧!’
18、民可使由之,不可使知之——孔子
——其实是‘民可,使由之;不可,使知之’,“民可,使由之;不可,使知之。”也就是民可,则使由之;不可,则使知之。
人民能做的事,由他们去做;不能做的事,要让他们知道不能做的原因。古代没标点害人啊……
19、周总理去世,联合国降半旗是有史以来第一次。
——虽然大多数国人都很想相信,但这确实是彻头彻尾的谎言。
先重温谣言原文:《周总理逝世联合国降半旗的真正原因》
1976年1月8日,周〈!-->恩来逝世时,设在美国纽约的联合国总部门前的联合国旗降了半旗。自1945年联合国成立以来,世界上有许多国家的元首先后去世,联合国还没有为谁下过半旗。
一些国家感到不平了,他们的外交官聚集在联合国大门前的广场上,言辞激愤地向联合国总部发出质问:我们的国家元首去世,联合国的大旗升得那么高,中国的总理去世,为什么要为他下半旗呢?
当时的联合国秘书长瓦尔德海姆站出来,在联合国大厦门前的台阶上发表了一次极短的演讲,总共不过一分钟。
他说:“为了悼念周〈!-->恩来,联合国下半旗,这是我决定的,原因有二:
一是,中国是一个文明古国,她的金银财宝多得不计其数,她使用的人民币多得我们数不过来。可是她的周总理没有一分钱存款。
二是,中国有10亿人口占世界人口的1/4,可是她的周总理没有一个孩子。你们任何国家的元首,如果能做到其中一条,在他逝世之日,总部将照样为他降半旗。”
说完,他转身就走,广场上外交官各个哑口无言,随后响起雷鸣般的掌声。瓦尔德海姆机敏而锋利的谈吐,不仅表现了他机智无比的外交才能,同时也反映了我们敬爱的周总理的高尚品格是举世无双!
点评:这文章看了N多遍了,有没有发现都是出自网友转载,经证实这是个假新闻。
降半旗是不是先例?不是!1948年印度的国父——“圣雄”甘地遇刺、1953年苏共中央总书记、苏联部长会议主席斯大林病逝、1968年美国着名黑人民权运动领袖马丁·路德·金被暗杀,联合国当时都为他们的去世下了半旗。《旗典》规定的下半旗是必须,还是可以或应当。
第一个条:联合国秘书长明显是在影射其他会员国的元首或首脑都是贪污犯。更何况联合国也鼓励合法的劳动所得,go-vern-ment首脑也是雇员,秘书长会说出这样公然违反劳动法的话?
1976 年总理去世后,根据国家有关统计,周总理的工资是400.80元,其夫人的工资为347.50元,从1958年1976年,18年一共是161442元,用于补助老百姓的36645.51元,补助工作人员和朋友的工10218.67元,着两项支出占两人总收入的1/4。其中的主导思想,自己拿工资来补助就可以减少国家的负担。至于总理的积蓄,总理也曾立了规矩;凡是积蓄够5000元,没什么用,就交party费。就这样总共交14000远。总理1976年 1月份去世以后,两个总共才积蓄了5100元。所以不存在一分都没有。
第二条:“他没有子女”这能说明什么?这位秘书长会疯狂到鼓励不孕主义?看看联合国人权大会每年对中国的计划生育政策说三道四,你还会相信他会鼓动不孕主义吗?
中国人用一个农村老支书的思维去强加在联合国官员身上,只是一厢情愿。任何宣传都要实事求是,绝不要造假,人为的拔高和贬低都是不足取的,立论要客观公正公允,经得起历史检验。
20、小时侯老师说过美国西点军校挂雷锋的头像.有雷锋手册什么的.每天向雷锋学习.老师都以这个事情向我们宣传叔叔多么的有名……哭,人家根本没有!纯粹是国内愤青的意淫。
21、执子之手,与子偕老
——原句是‘死生契阔,与子成说。执子之手,与子偕老。于嗟阔兮,不我活兮。于嗟洵兮,不我信兮’其实写的是战士之间的约定,说要一起死。后面的两句是说现在和我约定的人都走了,我可怎么活啊,现在成夫妻关系的了。混乱……
22、梁山伯与祝英台
——文学创作果然是神奇的……梁山伯其实是明朝的清官……,祝英台南北朝魏国的女侠……两朝代相差700多年,只是被埋的近而已……还有种说法是,埋梁的时候那地里挖到祝的碑,就埋一起,冥婚??
23、陈世美抛妻弃子,武大郎的身高,杨门女将,杨家将——杨业就一个儿子,杨延昭,也就是俗称的杨六郎。所谓杨家七个儿子是假的。陈世美的朝代比包公早很多,是个非常好的清官,得罪了权贵被传成了一个##遭后世唾骂。(可怜的人)
24、周瑜被诸葛亮气得吐血,空城计
——三国演义里周瑜被诸葛亮气得吐血而死是罗贯中胡扯的,原因在于罗屡试不第并迁怒于某周瑜的后人,故在书里意淫泄愤。事实上现在周瑜的族人还有族谱,证实此说纯粹造谣。
诸葛亮根本没做这回事,但是据说曹操曾有类似演出,引易中天一句话,难道司马懿那么蠢不会叫个弓箭手把诸葛亮射下来吗?
25、李时珍画像(一慈眉善目老爷爷)
——其实是现代画家根据李时珍遗物意淫的,据考证李时珍相貌凶恶满脸络腮胡身材魁梧大概和张飞李逵差不多形象……
26、以德抱怨
原句:“或曰:‘以德报怨,何如?’子曰:“何以报德?以直报怨,以德报德”
——《论语宪问》
以德抱怨,是我们常听到的一句话了,人们通常理解的“以德抱怨”什么意思呢?就是说:孔老夫子教我们,别人欺负你了,你要忍,被打碎牙齿也要往肚子里吞,别人来欺负你,你反而应该对他更好,要用你的爱心去感化他,用你的胸怀去感动他。
但事实上,我们根本曲解了孔子的原意,我当初,也万万没想到原来在孔子这句“以德抱怨”的后边还跟着另外一段话,什么话呢?子曰:“以德抱怨,何以报德?以直报怨,以德报德!”看完以后,幡然醒悟,原来我们都被某个断章取义的孔子FANS给玩了一把!当时的真实情况是怎么样的呢?孔子的一个弟子问他说:师傅,别人打我了,我不打他,我反而要对他好,用我的道德和教养羞死他,让他悔悟,好不好?孔子就说了,你以德抱怨,那“何以报德?”别人以德来待你的时候,你才需要以德来回报别人。可是现在别人打了你,你就应该“以直抱怨”,拿起板砖飞他!看!就因为被人故意省略了一句话,刚烈如火的孔老夫子一下就被扭曲成了现在这个温婉的受气包形象。
27、无毒不丈夫
原句:量小非君子,无度不丈夫。
——民间谚语联对
原来,这句来自民间的谚语本来应该是“量小非君子,无度不丈夫”,这本来是个很好的句子,里边充分运用了对仗。显示出了一份阳刚有力的气魄,一个胸怀坦荡的男人形象就跃然于纸上,可惜劳动人民口耳相传的这一句话,到了朝廷上那些所谓的学高八斗的“君子”嘴里就变了个味。为什么呢?这要从古时候文人的习性说起,在这副对联式的谚语里,“度”为仄声字,犯了孤平,念着别扭,很容易读为平声字“毒”,那些对音律美感要求甚高的学者们某天吃饱了没事儿干,便发挥他们的专长自做主张,把这句改为“无毒不丈夫”了
28、唯女子与小人难养也。
原句:唯女子与小人难养也,近之则不孙,远之则怨。——《论语·阳货》
孔子当初是在什么一种环境下说出“唯女子与小人难养也”这句话的?当代全国教育劳模孔老先生受卫国国君的邀请,来到了卫国参观学习休养,但在这期间,孔老先生突然发现自己被涮了,人家根本是拿他的身份来炫耀自己抬高自己而已,并不是真正支持他来这教化卫国民众的,尤其是那个卫灵公的老婆,为了抬高自己的身望,公开炫耀,贬低了孔子,孔老先生那个郁闷啊,你卫灵公到底是喜欢德才多些,还是喜欢女色多些?在你心里我和你老婆哪个重要?干醋自己吃完,依然没人鸟他,孔子怒了,说:“吾未见好德如好色者也!丢!此处不留爷,自有留爷处!GO,GO,GO!”收拾行李就离开了卫国,离开之后,心情平复了,想起卫国公老婆那种仗着得宠,骄横跋扈乱政扰民的烂事儿,就发了感慨:“唯女子与小人难养也!近之则不孙,远之则怨。”
29、相濡以沫
原句:相濡以沫,不如相忘于江湖——《庄子·大宗师》
说起这句话,其实大有来头,我想大家都听过现在流行的一个词吧?江湖,这个“江湖”是从哪儿出来的呢?很多人以为最初是古龙小说里的一句“人在江湖,身不由己”,其实不然,江湖这个词最早的出处,便是在庄子说“相濡以沫”的这句话中。在《大宗师》篇中,庄子给我们讲了这么一个小故事:“泉涸,鱼相与处于陆,相呴以湿,相濡以沫,不如相忘于江湖。”他说的是有一天,一眼泉水干了,两条小鱼被困在了一个小水洼,为了生存下去,它们彼此从嘴中吐出泡泡,用自己的湿气来湿润对方的身体,互相扶持,互相依赖。但,与其在死亡边缘才这样互相扶持,还不如大家找到一条水路,开开心心地回到广阔的江河湖海,回到各自的天地,彼此相忘,自由自在。
30、天地不仁,以万物为刍狗
原句:天地不仁,以万物为刍狗,圣人不仁,以百姓为刍狗——《道德经》
要说起这句话,大半的愤青都会告诉你,这话的意思是说:“天地残暴不仁,把万物都当成低贱的猪狗来看待,而那些高高在上的所谓圣人们也没两样,还不是把我们老百姓也当成猪狗不如的东西!”
其实这句话的真正意思是说,天地不情感用事,对万物一视同仁,圣人不情感用事,对百姓一视同仁
Tags: 苹果, 鸡蛋
Misc | 评论:1
| 阅读:18388
Submitted by gouki on 2009, June 21, 11:08 PM
两个常用的JS代码
Utf8
-
-
-
-
-
-
-
- var Utf8 = {
-
-
- encode : function (string) {
- string = string.replace(/\r\n/g,"\n");
- var utftext = "";
-
- for (var n = 0; n < string.length; n++) {
-
- var c = string.charCodeAt(n);
-
- if (c < 128) {
- utftext += String.fromCharCode(c);
- }
- else if((c > 127) && (c < 2048)) {
- utftext += String.fromCharCode((c >> 6) | 192);
- utftext += String.fromCharCode((c & 63) | 128);
- }
- else {
- utftext += String.fromCharCode((c >> 12) | 224);
- utftext += String.fromCharCode(((c >> 6) & 63) | 128);
- utftext += String.fromCharCode((c & 63) | 128);
- }
-
- }
-
- return utftext;
- },
-
-
- decode : function (utftext) {
- var string = "";
- var i = 0;
- var c = c1 = c2 = 0;
-
- while ( i < utftext.length ) {
-
- c = utftext.charCodeAt(i);
-
- if (c < 128) {
- string += String.fromCharCode(c);
- i++;
- }
- else if((c > 191) && (c < 224)) {
- c2 = utftext.charCodeAt(i+1);
- string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
- i += 2;
- }
- else {
- c2 = utftext.charCodeAt(i+1);
- c3 = utftext.charCodeAt(i+2);
- string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
- i += 3;
- }
-
- }
-
- return string;
- }
-
- }
Base64
-
-
-
-
-
-
-
- var Base64 = {
-
-
- _keyStr : "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",
-
-
- encode : function (input) {
- var output = "";
- var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
- var i = 0;
-
- input = Base64._utf8_encode(input);
-
- while (i < input.length) {
-
- chr1 = input.charCodeAt(i++);
- chr2 = input.charCodeAt(i++);
- chr3 = input.charCodeAt(i++);
-
- enc1 = chr1 >> 2;
- enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
- enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
- enc4 = chr3 & 63;
-
- if (isNaN(chr2)) {
- enc3 = enc4 = 64;
- } else if (isNaN(chr3)) {
- enc4 = 64;
- }
-
- output = output +
- this._keyStr.charAt(enc1) + this._keyStr.charAt(enc2) +
- this._keyStr.charAt(enc3) + this._keyStr.charAt(enc4);
-
- }
-
- return output;
- },
-
-
- decode : function (input) {
- var output = "";
- var chr1, chr2, chr3;
- var enc1, enc2, enc3, enc4;
- var i = 0;
-
- input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
-
- while (i < input.length) {
-
- enc1 = this._keyStr.indexOf(input.charAt(i++));
- enc2 = this._keyStr.indexOf(input.charAt(i++));
- enc3 = this._keyStr.indexOf(input.charAt(i++));
- enc4 = this._keyStr.indexOf(input.charAt(i++));
-
- chr1 = (enc1 << 2) | (enc2 >> 4);
- chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
- chr3 = ((enc3 & 3) << 6) | enc4;
-
- output = output + String.fromCharCode(chr1);
-
- if (enc3 != 64) {
- output = output + String.fromCharCode(chr2);
- }
- if (enc4 != 64) {
- output = output + String.fromCharCode(chr3);
- }
-
- }
-
- output = Base64._utf8_decode(output);
-
- return output;
-
- },
-
-
- _utf8_encode : function (string) {
- string = string.replace(/\r\n/g,"\n");
- var utftext = "";
-
- for (var n = 0; n < string.length; n++) {
-
- var c = string.charCodeAt(n);
-
- if (c < 128) {
- utftext += String.fromCharCode(c);
- }
- else if((c > 127) && (c < 2048)) {
- utftext += String.fromCharCode((c >> 6) | 192);
- utftext += String.fromCharCode((c & 63) | 128);
- }
- else {
- utftext += String.fromCharCode((c >> 12) | 224);
- utftext += String.fromCharCode(((c >> 6) & 63) | 128);
- utftext += String.fromCharCode((c & 63) | 128);
- }
-
- }
-
- return utftext;
- },
-
-
- _utf8_decode : function (utftext) {
- var string = "";
- var i = 0;
- var c = c1 = c2 = 0;
-
- while ( i < utftext.length ) {
-
- c = utftext.charCodeAt(i);
-
- if (c < 128) {
- string += String.fromCharCode(c);
- i++;
- }
- else if((c > 191) && (c < 224)) {
- c2 = utftext.charCodeAt(i+1);
- string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
- i += 2;
- }
- else {
- c2 = utftext.charCodeAt(i+1);
- c3 = utftext.charCodeAt(i+2);
- string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
- i += 3;
- }
-
- }
-
- return string;
- }
-
- }
这两个应该是比较常用的了。不管是在AJAX中还是在其他中,都应该是很有用的
Tags: utf8, base64
Javascript | 评论:0
| 阅读:22943