 | 标记说明: 转载 原创 December 27, 2006 代码 Coding 即 %uXXXX 格式的,看着很不爽。iconv UNICODE 居然还不行,得是 UNICODEBIG <?PHP function fnJSUrlDecode($sOrg, $sCharset = "GBK") { $sPattern = "/%u[0-9a-f]{4}/i"; preg_match_all($sPattern, $sOrg, $aOut); $aSearch = array(); $aReplace = array(); foreach ($aOut[0] as $sValue) { $aSearch[] = $sValue; $aReplace[] = iconv("UNICODEBIG", $sCharset, pack("H*", substr($sValue, 2))); } $sOut = str_replace($aSearch, $aReplace, $sOrg); return $sOut; }
echo fnJSUrlDecode("word=%u6D4B%u8BD5%u6587%u5B57"); ?> Posted by Platinum at 06:11 PM | No more content | Comments (0) December 21, 2006 代码 Coding 整个思考过程是这样的,概念过于基本,让人不齿…… url 在传递时,如果有特殊字符需要 urlencode,但是这是一种很冗长的格式,比方说“测试”二字,如果是 GBK 编码的话是 4 个字节,可 urlencode 后是“%B2%E2%CA%D4”,12 个字节,是原来的三倍,这很不爽,如果你整个参数都只有中文,可能 HEX 形式(PHP 里是 bin2hex)表示能好点,就是没了 %,成了 B2E2CAD4(这两种方式类似 UTF-8 和 Unicode 的关系),不过也有两倍长 为什么会有两倍长?因为符号没有被充分利用,每一位只用了 0-9、A-F 共 16 种,如果充分利用 A-Z,再包括大小写,加上数字共 62 种,再找两种(比方说 _ 和 .)凑到 64 种,2 的幂次数。64 ^ 2 = 16 ^ 3 = 4k,既是说两位的 64 进制数与三位的 16 进制数表示的内容相当。 于是花了一个来小时,写完后先是挺美,又有不祥预感,google 了一下 RFC,才明白其实我实现的就是 base64……大悲 Posted by Platinum at 12:54 PM | Continue reading (4.3 KB) | Comments (0) December 19, 2006 代码 Coding 写东西写着写着突然想起一套经典老题 记得第一道题目是 a 和 b 两个整数变量,在不增加新变量的前提下,让它们两个的值对调。这题太老了。a = a + b,b = a - b,a = a - b 让我觉得最 NB 的一道是,判断一个混列的数组(“3,6,5,9”或者“123,94,741,628...”这类)是否能拼成一串连续整数(4,5,6,7)的算法,看到最优算法后我是精神抖擞……可就是忘了记下来了,只记得是只用了一次循环了,其他全忘 还有个以前在一个论坛看到的,13 枚珠子摆成环形,两个人轮流拿,一次可以拿一到两枚,但必须是连续的珠子,不能跳着拿,拿到最后一枚的算胜,应采用什么样的策略保证后手总能拿到最后一枚? Posted by Platinum at 02:34 PM | No more content | Comments (0) December 5, 2006 铂 Platinum 感觉这部片子被经常提起,于是越发好奇,才决定看的。片很闷,闷的让我想起了《Dead Man》。 在个人价值上,我接受类似韩非子的五蠹的观点,因此我很奇怪作为正面形象出场的主角。又翻了些评论之类的,我还是没太明白原作者的用意,这么一个无所事事、不产生任何价值、无法承担责任的小混混,要代表挑战世俗、制度和压迫的英雄?价值观上有些接受不了。总让我想起粪青以及拿着吉他抱怨社会不公的摇滚小青年们。 那些评论也很可笑,我不相信那些肤浅的解释就是片子所谓的隐喻、以及它能拿奥斯卡五项大奖的原因。 这部片子大我 7 岁——天呐,那时候我的父母还没成年呢——又是在地球的另一面,还是这么一部“社会政治电影”。本来没几个人能看的电影惹来一群人的唧唧喳喳。就像那句反问,鲁迅是谁? Posted by Platinum at 05:34 PM | No more content | Comments (1) |