2019独角兽企业重金招聘Python工程师标准>>>

PHP实现JS颜文字加密解密过程-aaencode

调试某网站JS时出现了一堆萌萌哒的代码,且能执行成功,对此感到好奇进行研究并实现了PHP端的编码解码过程。

例如,如下代码在浏览器控制台执行后会输出一段文本。

゚ω゚ノ= /`m´)ノ ~┻━┻ //*´∇`*/ ['_']; o=(゚ー゚) =_=3; c=(゚Θ゚) =(゚ー゚)-(゚ー゚); (゚Д゚) =(゚Θ゚)= (o^_^o)/ (o^_^o);(゚Д゚)={゚Θ゚: '_' ,゚ω゚ノ : ((゚ω゚ノ==3) +'_') [゚Θ゚] ,゚ー゚ノ :(゚ω゚ノ+ '_')[o^_^o -(゚Θ゚)] ,゚Д゚ノ:((゚ー゚==3) +'_')[゚ー゚] }; (゚Д゚) [゚Θ゚] =((゚ω゚ノ==3) +'_') [c^_^o];(゚Д゚) ['c'] = ((゚Д゚)+'_') [ (゚ー゚)+(゚ー゚)-(゚Θ゚) ];(゚Д゚) ['o'] = ((゚Д゚)+'_') [゚Θ゚];(゚o゚)=(゚Д゚) ['c']+(゚Д゚) ['o']+(゚ω゚ノ +'_')[゚Θ゚]+ ((゚ω゚ノ==3) +'_') [゚ー゚] + ((゚Д゚) +'_') [(゚ー゚)+(゚ー゚)]+ ((゚ー゚==3) +'_') [゚Θ゚]+((゚ー゚==3) +'_') [(゚ー゚) - (゚Θ゚)]+(゚Д゚) ['c']+((゚Д゚)+'_') [(゚ー゚)+(゚ー゚)]+ (゚Д゚) ['o']+((゚ー゚==3) +'_') [゚Θ゚];(゚Д゚) ['_'] =(o^_^o) [゚o゚] [゚o゚];(゚ε゚)=((゚ー゚==3) +'_') [゚Θ゚]+ (゚Д゚) .゚Д゚ノ+((゚Д゚)+'_') [(゚ー゚) + (゚ー゚)]+((゚ー゚==3) +'_') [o^_^o -゚Θ゚]+((゚ー゚==3) +'_') [゚Θ゚]+ (゚ω゚ノ +'_') [゚Θ゚]; (゚ー゚)+=(゚Θ゚); (゚Д゚)[゚ε゚]='\\'; (゚Д゚).゚Θ゚ノ=(゚Д゚+ ゚ー゚)[o^_^o -(゚Θ゚)];(o゚ー゚o)=(゚ω゚ノ +'_')[c^_^o];(゚Д゚) [゚o゚]='\"';(゚Д゚) ['_'] ( (゚Д゚) ['_'] (゚ε゚+(゚Д゚)[゚o゚]+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (゚ー゚)+ (o^_^o)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((゚ー゚) + (゚Θ゚))+ ((゚ー゚) + (o^_^o))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((゚ー゚) + (゚Θ゚))+ ((o^_^o) +(o^_^o))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((o^_^o) +(o^_^o))+ (o^_^o)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((゚ー゚) + (゚Θ゚))+ ((゚ー゚) + (o^_^o))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((゚ー゚) + (゚Θ゚))+ (゚ー゚)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (゚ー゚)+ ((゚ー゚) + (゚Θ゚))+ (゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+ ((o^_^o) +(o^_^o))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((゚ー゚) + (゚Θ゚))+ (゚ー゚)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((゚ー゚) + (゚Θ゚))+ ((゚ー゚) + (o^_^o))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (゚ー゚)+ ((゚ー゚) + (o^_^o))+ (゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+ (c^_^o)+ (゚Д゚)[゚ε゚]+(゚ー゚)+ ((o^_^o) - (゚Θ゚))+ (゚Д゚)[゚ε゚]+(o゚ー゚o)+ ((゚ー゚) + (゚Θ゚))+ ((゚ー゚) + (゚Θ゚))+ (゚Θ゚)+ (c^_^o)+ (゚Д゚)[゚ε゚]+(o゚ー゚o)+ ((゚ー゚) + (゚Θ゚))+ (゚Д゚) .゚Θ゚ノ+ ((゚ー゚) + (゚ー゚))+ (゚Д゚) .゚Θ゚ノ+ (゚Д゚)[゚ε゚]+(o゚ー゚o)+ ((゚ー゚) + (゚Θ゚))+ (゚Θ゚)+ (゚ー゚)+ (o^_^o)+ (゚Д゚)[゚ε゚]+(o゚ー゚o)+ ((o^_^o) +(o^_^o))+ ((o^_^o) +(o^_^o))+ (c^_^o)+ (゚Д゚) .゚Д゚ノ+ (゚Д゚)[゚ε゚]+(o゚ー゚o)+ ((o^_^o) +(o^_^o))+ (゚Д゚) .゚Д゚ノ+ (c^_^o)+ ((゚ー゚) + (゚Θ゚))+ (゚Д゚)[゚ε゚]+(゚ー゚)+ ((o^_^o) - (゚Θ゚))+ (゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+ (゚Θ゚)+ (゚Д゚)[゚ε゚]+((゚ー゚) + (o^_^o))+ (o^_^o)+ (゚Д゚)[゚o゚]) (゚Θ゚)) ('_');

这里附上原作者的aaencode编码地址,点击这里。

网页源码里可以查看到具体的编码过程,摘录如下。

function aaencode( text )
{var t;var b = ["(c^_^o)","(゚Θ゚)","((o^_^o) - (゚Θ゚))","(o^_^o)","(゚ー゚)","((゚ー゚) + (゚Θ゚))","((o^_^o) +(o^_^o))","((゚ー゚) + (o^_^o))","((゚ー゚) + (゚ー゚))","((゚ー゚) + (゚ー゚) + (゚Θ゚))","(゚Д゚) .゚ω゚ノ","(゚Д゚) .゚Θ゚ノ","(゚Д゚) ['c']","(゚Д゚) .゚ー゚ノ","(゚Д゚) .゚Д゚ノ","(゚Д゚) [゚Θ゚]"];var r = "゚ω゚ノ= /`m´)ノ ~┻━┻   //*´∇`*/ ['_']; o=(゚ー゚)  =_=3; c=(゚Θ゚) =(゚ー゚)-(゚ー゚); "; if( /ひだまりスケッチ×(365|356)\s*来週も見てくださいね[!!]/.test( text ) ){r += "X=_=3; ";r += "\r\n\r\n    X / _ / X < \"来週も見てくださいね!\";\r\n\r\n";}r += "(゚Д゚) =(゚Θ゚)= (o^_^o)/ (o^_^o);"+"(゚Д゚)={゚Θ゚: '_' ,゚ω゚ノ : ((゚ω゚ノ==3) +'_') [゚Θ゚] "+",゚ー゚ノ :(゚ω゚ノ+ '_')[o^_^o -(゚Θ゚)] "+",゚Д゚ノ:((゚ー゚==3) +'_')[゚ー゚] }; (゚Д゚) [゚Θ゚] =((゚ω゚ノ==3) +'_') [c^_^o];"+"(゚Д゚) ['c'] = ((゚Д゚)+'_') [ (゚ー゚)+(゚ー゚)-(゚Θ゚) ];"+"(゚Д゚) ['o'] = ((゚Д゚)+'_') [゚Θ゚];"+"(゚o゚)=(゚Д゚) ['c']+(゚Д゚) ['o']+(゚ω゚ノ +'_')[゚Θ゚]+ ((゚ω゚ノ==3) +'_') [゚ー゚] + "+"((゚Д゚) +'_') [(゚ー゚)+(゚ー゚)]+ ((゚ー゚==3) +'_') [゚Θ゚]+"+"((゚ー゚==3) +'_') [(゚ー゚) - (゚Θ゚)]+(゚Д゚) ['c']+"+"((゚Д゚)+'_') [(゚ー゚)+(゚ー゚)]+ (゚Д゚) ['o']+"+"((゚ー゚==3) +'_') [゚Θ゚];(゚Д゚) ['_'] =(o^_^o) [゚o゚] [゚o゚];"+"(゚ε゚)=((゚ー゚==3) +'_') [゚Θ゚]+ (゚Д゚) .゚Д゚ノ+"+"((゚Д゚)+'_') [(゚ー゚) + (゚ー゚)]+((゚ー゚==3) +'_') [o^_^o -゚Θ゚]+"+"((゚ー゚==3) +'_') [゚Θ゚]+ (゚ω゚ノ +'_') [゚Θ゚]; "+"(゚ー゚)+=(゚Θ゚); (゚Д゚)[゚ε゚]='\\\\'; "+"(゚Д゚).゚Θ゚ノ=(゚Д゚+ ゚ー゚)[o^_^o -(゚Θ゚)];"+ "(o゚ー゚o)=(゚ω゚ノ +'_')[c^_^o];"+//TODO"(゚Д゚) [゚o゚]='\\\"';"+ "(゚Д゚) ['_'] ( (゚Д゚) ['_'] (゚ε゚+";r += "(゚Д゚)[゚o゚]+ ";for( var i = 0; i < text.length; i++ ){n = text.charCodeAt( i );t = "(゚Д゚)[゚ε゚]+";if( n <= 127 ){t += n.toString( 8 ).replace( /[0-7]/g, function(c){ return b[ c ] + "+ "; } );}else{var m = /[0-9a-f]{4}$/.exec( "000" + n.toString(16 ) )[0];t += "(o゚ー゚o)+ " + m.replace( /[0-9a-f]/gi, function(c){ return b[ parseInt( c,16 ) ] + "+ "; } );}r += t;}r += "(゚Д゚)[゚o゚]) (゚Θ゚)) ('_');";return r;
}

代码是JS的,在后端PHP上运行是一件比较麻烦的事,考虑V8配置在win/linux环境兼容比较麻烦。本想网上找找有类似的直接拿来用之,可悲没有找到,只好手动将其代码译为PHP语法,并实现解码过程。

首先实现两个PHP没有的JS常用函数,兼容中文。

function charCodeAt($str, $index)
{$char = mb_substr($str, $index, 1, 'UTF-8');if (mb_check_encoding($char, 'UTF-8')){$ret = mb_convert_encoding($char, 'UTF-32BE', 'UTF-8');return hexdec(bin2hex($ret));}else{return null;}
}function uchr ($codes) {if (is_scalar($codes)) $codes= func_get_args();$str= '';foreach ($codes as $code){$buf = html_entity_decode('&#'.$code.';',ENT_NOQUOTES,'UTF-8');$buf == '&#'.$code.';' && ($buf = mb_convert_encoding('&#' . intval($code) . ';', 'UTF-8', 'HTML-ENTITIES'));$str.= $buf;}return $str;
}

接着是编码和解码的函数过程。

//简单实现没有封装,这个$b只能放到最外面了,比较丑w(゚Д゚)w
$b = ["(c^_^o)","(゚Θ゚)","((o^_^o) - (゚Θ゚))","(o^_^o)","(゚ー゚)","((゚ー゚) + (゚Θ゚))","((o^_^o) +(o^_^o))","((゚ー゚) + (o^_^o))","((゚ー゚) + (゚ー゚))","((゚ー゚) + (゚ー゚) + (゚Θ゚))","(゚Д゚) .゚ω゚ノ","(゚Д゚) .゚Θ゚ノ","(゚Д゚) ['c']","(゚Д゚) .゚ー゚ノ","(゚Д゚) .゚Д゚ノ","(゚Д゚) [゚Θ゚]"];//编码的过程
function aaencode($text){global $b;$r = "゚ω゚ノ= /`m´)ノ ~┻━┻   //*´∇`*/ ['_']; o=(゚ー゚)  =_=3; c=(゚Θ゚) =(゚ー゚)-(゚ー゚); ";if(preg_match('/ひだまりスケッチ×(365|356)\s*来週も見てくださいね[!!]/', $text)){$r .= "X=_=3; ";$r .= "\r\n\r\n    X / _ / X < \"来週も見てくださいね!\";\r\n\r\n";}$r .= "(゚Д゚) =(゚Θ゚)= (o^_^o)/ (o^_^o);"."(゚Д゚)={゚Θ゚: '_' ,゚ω゚ノ : ((゚ω゚ノ==3) +'_') [゚Θ゚] ".",゚ー゚ノ :(゚ω゚ノ+ '_')[o^_^o -(゚Θ゚)] ".",゚Д゚ノ:((゚ー゚==3) +'_')[゚ー゚] }; (゚Д゚) [゚Θ゚] =((゚ω゚ノ==3) +'_') [c^_^o];"."(゚Д゚) ['c'] = ((゚Д゚)+'_') [ (゚ー゚)+(゚ー゚)-(゚Θ゚) ];"."(゚Д゚) ['o'] = ((゚Д゚)+'_') [゚Θ゚];"."(゚o゚)=(゚Д゚) ['c']+(゚Д゚) ['o']+(゚ω゚ノ +'_')[゚Θ゚]+ ((゚ω゚ノ==3) +'_') [゚ー゚] + "."((゚Д゚) +'_') [(゚ー゚)+(゚ー゚)]+ ((゚ー゚==3) +'_') [゚Θ゚]+"."((゚ー゚==3) +'_') [(゚ー゚) - (゚Θ゚)]+(゚Д゚) ['c']+"."((゚Д゚)+'_') [(゚ー゚)+(゚ー゚)]+ (゚Д゚) ['o']+"."((゚ー゚==3) +'_') [゚Θ゚];(゚Д゚) ['_'] =(o^_^o) [゚o゚] [゚o゚];"."(゚ε゚)=((゚ー゚==3) +'_') [゚Θ゚]+ (゚Д゚) .゚Д゚ノ+"."((゚Д゚)+'_') [(゚ー゚) + (゚ー゚)]+((゚ー゚==3) +'_') [o^_^o -゚Θ゚]+"."((゚ー゚==3) +'_') [゚Θ゚]+ (゚ω゚ノ +'_') [゚Θ゚]; "."(゚ー゚)+=(゚Θ゚); (゚Д゚)[゚ε゚]='\\\\'; "."(゚Д゚).゚Θ゚ノ=(゚Д゚+ ゚ー゚)[o^_^o -(゚Θ゚)];"."(o゚ー゚o)=(゚ω゚ノ +'_')[c^_^o];"."(゚Д゚) [゚o゚]='\\\"';"."(゚Д゚) ['_'] ( (゚Д゚) ['_'] (゚ε゚+";$r .= "(゚Д゚)[゚o゚]+ ";for( $i = 0; $i < mb_strlen($text); $i++ ){$n = charCodeAt($text,$i);$t = "(゚Д゚)[゚ε゚]+";if( $n <= 127 ){$t .= preg_replace_callback('/[0-7]/', function($c)use ($b){return $b[$c[0]]."+ ";}, ((string)decoct($n)));}else{if(preg_match('/[0-9a-f]{4}$/', '000'.((string)dechex($n)),$result)){$m = $result[0];}else{$m = '';}$t .= "(o゚ー゚o)+ " . preg_replace_callback('/[0-9a-f]/i',function($c)use ($b){return $b[ hexdec($c[0]) ] . "+ ";},$m);}$r .= $t;}$r .= "(゚Д゚)[゚o゚]) (゚Θ゚)) ('_');";return $r;
}//解码的过程(っ•̀ω•́)っ✎⁾⁾
function aadecode($text){global $b;$text = strtr($text, ["(゚Д゚)[゚o゚]) (゚Θ゚)) ('_');" => '']);for($i=0;$i<count($b);$i++){$buf = $b[$i];if($i <=7){//8进制逆向$str = (($i));$text = strtr($text, [$buf."+ "=>$str]);}else{//16进制逆向$text = strtr($text, [$buf."+ " => dechex($i)]);}}$text = preg_replace_callback('/\(゚Д゚\)\[゚ε゚\]\+(\d+)/', function($c){return uchr(octdec($c[1]));}, $text);$text = preg_replace_callback('/\(゚Д゚\)\[゚ε゚\]\+\(o゚ー゚o\)\+\s+([0-9a-f]{4})/', function($c){return uchr(hexdec($c[1]));}, $text);$pre = ["゚ω゚ノ= /`m´)ノ ~┻━┻   //*´∇`*/ ['_']; o=(゚ー゚)  =_=3; c=(゚Θ゚) =(゚ー゚)-(゚ー゚); ","X=_=3; ","\r\n\r\n    X / _ / X < \"来週も見てくださいね!\";\r\n\r\n","(゚Д゚) =(゚Θ゚)= (o^_^o)/ (o^_^o);","(゚Д゚)={゚Θ゚: '_' ,゚ω゚ノ : ((゚ω゚ノ==3) +'_') [゚Θ゚] ",",゚ー゚ノ :(゚ω゚ノ+ '_')[o^_^o -(゚Θ゚)] ",",゚Д゚ノ:((゚ー゚==3) +'_')[゚ー゚] }; (゚Д゚) [゚Θ゚] =((゚ω゚ノ==3) +'_') [c^_^o];","(゚Д゚) ['c'] = ((゚Д゚)+'_') [ (゚ー゚)+(゚ー゚)-(゚Θ゚) ];","(゚Д゚) ['o'] = ((゚Д゚)+'_') [゚Θ゚];","(゚o゚)=(゚Д゚) ['c']+(゚Д゚) ['o']+(゚ω゚ノ +'_')[゚Θ゚]+ ((゚ω゚ノ==3) +'_') [゚ー゚] + ","((゚Д゚) +'_') [(゚ー゚)+(゚ー゚)]+ ((゚ー゚==3) +'_') [゚Θ゚]+","((゚ー゚==3) +'_') [(゚ー゚) - (゚Θ゚)]+(゚Д゚) ['c']+","((゚Д゚)+'_') [(゚ー゚)+(゚ー゚)]+ (゚Д゚) ['o']+","((゚ー゚==3) +'_') [゚Θ゚];(゚Д゚) ['_'] =(o^_^o) [゚o゚] [゚o゚];","(゚ε゚)=((゚ー゚==3) +'_') [゚Θ゚]+ (゚Д゚) .゚Д゚ノ+","((゚Д゚)+'_') [(゚ー゚) + (゚ー゚)]+((゚ー゚==3) +'_') [o^_^o -゚Θ゚]+","((゚ー゚==3) +'_') [゚Θ゚]+ (゚ω゚ノ +'_') [゚Θ゚]; ","(゚ー゚)+=(゚Θ゚); (゚Д゚)[゚ε゚]='\\\\'; ","(゚Д゚).゚Θ゚ノ=(゚Д゚+ ゚ー゚)[o^_^o -(゚Θ゚)];","(o゚ー゚o)=(゚ω゚ノ +'_')[c^_^o];","(゚Д゚) [゚o゚]='\\\"';","(゚Д゚) ['_'] ( (゚Д゚) ['_'] (゚ε゚+","(゚Д゚)[゚o゚]+ ",];$rA = [];foreach($pre as $val){$rA[$val] = '';}$text = strtr($text,$rA);return $text;
}

别忘了加上之前提到的两个函数,调用如下。

$crytext = aaencode('console.log("唐宋元明清");');
echo $crytext;//゚ω゚ノ= /`m´)ノ ~┻━┻   //*´∇`*/ ['_']; o=(゚ー゚)......echo aadecode($crytext);//console.log("唐宋元明清");

先整理到此,后续补充。

转载于:https://my.oschina.net/u/2366984/blog/1621119

PHP实现JS颜文字编码解码过程-aaencode+aadecode相关推荐

  1. js base64 编码解码

    js base64 编码解码 encode decode,可以直接使用 function Base64() {// private property_keyStr = "ABCDEFGHIJ ...

  2. 原来浏览器原生支持JS Base64编码解码

    原来浏览器原生支持JS Base64编码解码 转载来源:https://www.zhangxinxu.com/wordpress/2018/08/js-base64-atob-btoa-encode- ...

  3. 行人重识别0-08:DG-Net(ReID)-代码无死角解读(4)-网络Es编码解码过程

    以下链接是个人关于DG-Net(行人重识别ReID)所有见解,如有错误欢迎大家指出,我会第一时间纠正.有兴趣的朋友可以加微信:17575010159 相互讨论技术.若是帮助到了你什么,一定要记得点赞! ...

  4. H.264的CAVLC(编码.解码)过程详解

    看264也看到CAVLC来了,把这方面的资料贴在这里: 编码过程: 假设有一个4*4数据块 (变化,量化后就送入熵编码) {    0 , 3 , -1 , 0,    0, -1 ,   1, 0, ...

  5. js base64编码解码 btoa atob 函数简介

    window.atob(string):解码 用来解码一个已经被base-64编码过的字符串.(参数string: 必需是一个通过 btoa() 方法编码的字符串) window.btoa(strin ...

  6. JS base64编码解码实战

    应用场景: 今天开发的时候像后端发起GET请求,参数只要一个code,code要类似这样子的: code=jsapi_ticket=JCNlm2qSQ_O4W7M7fK5jZBng3qgYNIMv3R ...

  7. http协议解决粘包拆包半包 的编码解码过程、 以及netty 使用http协议的原理

    本文主要介绍netty对http协议解析原理,着重讲解keep-alive,gzip,truncked等机制,详细描述了netty如何实现对http解析的高性能. 1 http协议 1.1 描述 标示 ...

  8. JS CryptoJS 编码/解码 Base64 字符串

    用的JavaScript 的 CryptoJS库 https://github.com/brix/crypto-js 字符串 转 base64 要将文本字符串(UTF-8 编码) 转换为base-64 ...

  9. js编码java解码_常用的js、java编码解码方法

    前言 前后端直接传输数据进行交互不就行了吗,为什么还要进行编码解码?正常情况下直接交互没问题,但当有类似以下情况出现时就需要进行编码再进行传输: 1.编码格式难以统一,导致数据交互过程出现中文乱码等问 ...

最新文章

  1. 设置tabbaritem的title的颜色及按钮图片
  2. 大数据下Limit使用(MySQL)
  3. python【力扣LeetCode算法题库】42-接雨水(双指针法)
  4. 实战tkinter图形界面开发_如何进行简单的图形开发?
  5. 一个Eclipse代码显示主题
  6. 关于iOS 5 Could not instantiate class named NSLayoutConstraint错误
  7. 素数方法(thinking in java)
  8. 信息学奥赛一本通(1068:与指定数字相同的数的个数)
  9. spring整合atomikos实现分布式事务的方法示例_分布式事务一:基于数据库原生分布式事务方案实现...
  10. JavaScript和HTML事件处理程序属性中的this的含义
  11. python爬虫网易云音乐评论最多的歌_网易云音乐歌曲评论爬虫
  12. python分号_python中的分号(“;”)
  13. 致远oa wpsassistservlet任意文件上传漏洞
  14. 世硕电子发放员工证件随手扔地上,其实是一种服从性测试
  15. chrome单击打开标贴在当前窗口的新标签页设置
  16. mysql8.0安装/配置教程。
  17. 非线性混合效应 NLME模型对抗哮喘药物茶碱动力学研究
  18. jquery展开收起(手风琴)
  19. 计算久期matlab,[MATLAB代码模板]固定收益证券计算
  20. JavaScript新的对象创建方式---Object.create()

热门文章

  1. 如何修改was的java路径_在eclipse中修改tomcat的部署路径操作
  2. python3中map的用法_python3内置函数map
  3. 合并excel文件 C语言,多个Excel文件中的多个Sheet合并到一个Excel文件中两个函数...
  4. c语言c程序由函数构成 每个函数完成相对独立的功能,17秋学期(1709)《C语言程序设计》在线作业  满分...
  5. 织梦怎样调取mysql_如何实现dedecms外部数据库调用
  6. 20190817:(leetcode习题)旋转图像
  7. scala java抽象理解_scala – 抽象覆盖如何在Java代码方面起作用?
  8. es5中数组方法unshift、splice、reduce使用
  9. An attempt by a client to checkout a Connectio n has timed out报错解决
  10. vb UTF文本文件访问