<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    備注學(xué)院

    LuLu

      BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      5 隨筆 :: 50 文章 :: 16 評(píng)論 :: 0 Trackbacks

    2010年10月18日 #

    網(wǎng)址:http://s.open-lib.com/

    前言:

    今年年頭天氣比較多變,氣溫變化較大,因此每天早上看天氣預(yù)報(bào),然后告知女朋友,體形她注意,每天機(jī)械式的重復(fù),有時(shí)候忘記可能會(huì)被P,雖然沒(méi)發(fā)生過(guò)忘記。。

    能不能采取自動(dòng)化任務(wù)代替這樣的重復(fù)勞動(dòng)呢?

    幸虧我們是強(qiáng)大的碼農(nóng),只怕沒(méi)IDEA,不怕做不到。。。。。

    原理:

    其實(shí)原理很簡(jiǎn)單,就是定時(shí)抓取指定城市的天氣信息,然后組裝成要的內(nèi)容,發(fā)送郵件。

    不是說(shuō)短信嗎?怎么變了郵件了?

    大家別急,這里是利用幾大運(yùn)營(yíng)商的免費(fèi)的郵件到達(dá)提醒實(shí)現(xiàn)的,也就發(fā)送郵件,當(dāng)對(duì)方接收到郵件,自動(dòng)發(fā)短信到手機(jī),并且顯示郵件部分內(nèi)容。

     

    說(shuō)說(shuō):

    1、免費(fèi)、不限制訂閱數(shù)量、支持一個(gè)任務(wù)發(fā)送多人(大家輕著點(diǎn),別把服務(wù)器弄掛了);不支持時(shí)分秒定時(shí)任務(wù)

    2、支持訂閱類(lèi)型:今明兩天的天氣預(yù)報(bào),股票信息,基金信息,RSS。

     

    示例:

    基金:嘉實(shí)多元債券A[2011-08-01]最新凈值:1.071,昨日凈值:1.071,升幅:0.00%。


    股票:[中牧股份]:今日開(kāi)盤(pán)價(jià):22.60,當(dāng)前價(jià)格:22.20,今日最高價(jià):22.60,今日最低價(jià):22.19。 

     

    明天天氣預(yù)報(bào):東莞明天溫度:東莞,34℃~26℃,多云,微風(fēng)(小于3級(jí))。

     

     天氣預(yù)警:新疆維吾爾自治區(qū)吐魯番地區(qū)氣象臺(tái)發(fā)布高溫橙色預(yù)警。  (需重新調(diào)整,太抽象了;未開(kāi)放)

     

    展望未來(lái):

    1、現(xiàn)在在弄個(gè)天氣預(yù)警,也就是一旦天文臺(tái)發(fā)布臺(tái)風(fēng)XX警報(bào)之類(lèi),會(huì)很快的發(fā)到用戶(hù)的手機(jī),實(shí)現(xiàn)及時(shí)提醒,不過(guò)這部分還在測(cè)試當(dāng)中,還沒(méi)開(kāi)放。

    2、支持短信上行、郵件回復(fù)、GTALK遠(yuǎn)程命令(列表,停止,啟動(dòng)之類(lèi)),暫時(shí)也沒(méi)對(duì)外開(kāi)放,要試用的,可以聯(lián)系我。。

     

    支援:http://www.open-lib.com/Forum/Forum_13_1.action

    posted @ 2011-08-02 20:44 smildlzj 閱讀(2125) | 評(píng)論 (1)編輯 收藏

    [版權(quán)聲明]:版權(quán)歸作者所有,轉(zhuǎn)載時(shí)請(qǐng)以超鏈接形式標(biāo)明文章原始出處和作者信息及本聲明:
    http://www.open-lib.com/Forum/Read_69_1.action

    前言:

    當(dāng)jquery ajax在utf-8編碼下(頁(yè)面utf-8,接收utf-8),無(wú)任何問(wèn)題。可以正常post、get,處理頁(yè)面直接獲取正確的內(nèi)容。

    但在以下情況下:

    GBK -> AJAX POST ->GBK

    UTF-8 -> AJAX POST ->GBK

    后臺(tái)代碼無(wú)法獲取正確的內(nèi)容,通常表現(xiàn)為獲取到奇怪字符、問(wèn)號(hào)。

    經(jīng)典解決方法:

    1:發(fā)送頁(yè)面、接收頁(yè)面均采用UTF-8編碼。

    2:發(fā)送頁(yè)面在調(diào)用ajax post方法之前,將含有中文內(nèi)容的input用encodeURIComponent編碼一次,而接收頁(yè)面則調(diào)用解碼方法( 如:java.net.urldecoder.decode("接收到內(nèi)容","utf-8")  )。


    其中,第一種方法無(wú)疑是最簡(jiǎn)單、最直接,但往往不符合實(shí)際,因?yàn)楹芏囗?xiàng)目并不是使用utf-8編碼,例如國(guó)內(nèi)大部分使用gbk編碼,也不可能為了解決這樣一個(gè)問(wèn)題,而將整個(gè)項(xiàng)目轉(zhuǎn)換為utf-8編碼,成本太大,風(fēng)險(xiǎn)太高。

    第二方法,是現(xiàn)在最多人使用的方法,俗稱(chēng)二次編碼,為什么叫二次編碼,等下會(huì)解釋。客戶(hù)端編碼兩次,服務(wù)端解碼兩次。但這種方法不好的地方,就是前臺(tái)手動(dòng)編碼一次,后臺(tái)再手動(dòng)解碼一次,稍不留神就會(huì)忘記,而且代碼摻和前臺(tái)邏輯。

    交互過(guò)程:

    當(dāng)我們使用表單按照傳統(tǒng)方式post提交時(shí)候(非AJAX提交),瀏覽器會(huì)根據(jù)當(dāng)前頁(yè)面編碼,encode一次,然后發(fā)送到服務(wù)端,服務(wù)端接收到表單,會(huì)自動(dòng)dencode一次,通常這個(gè)過(guò)程是對(duì)程序是透明的,因此加上手動(dòng)編碼、解碼,就變成上面所說(shuō)的二次編碼。

    但當(dāng)我們使用AJAX方式提交時(shí)候,瀏覽器并不會(huì)自動(dòng)替我們encode,因此在jquery中有這樣的一段代碼:

    ajax: function( s ) {
        
    // Extend the settings, but re-extend 's' so that it can be
        // checked again later (in the test suite, specifically)
        s = jQuery.extend(true, s, jQuery.extend(true, {}, jQuery.ajaxSettings, s));

        
    var jsonp, jsre = /=?(&|$)/g, status, data,
            type 
    = s.type.toUpperCase();

        
    // convert data if not already a string
        if ( s.data && s.processData && typeof s.data !== "string" )
            s.data 
    = jQuery.param(s.data);
    ..    
    }

     

    以上是jquery的ajax方法的代碼片段,下面是正常調(diào)用jquery ajax post的代碼:

    $.ajax({
     url: ajaxurl,
     type: 'POST',
     dataType: 'html',
     timeout: 
    20000,//超時(shí)時(shí)間設(shè)定
     data:para,//參數(shù)設(shè)置
     success: function(html){

     }
    });

    通過(guò)上面代碼可以知道,當(dāng)設(shè)置了data時(shí)候,jquery內(nèi)部會(huì)調(diào)用jQuery.param方法對(duì)參數(shù)encode(執(zhí)行本應(yīng)瀏覽器處理的encode)。

    jQuery.param=function( a ) {
        
    var s = [ ];
        
    function add( key, value ){
            s[ s.length ] 
    = encodeURIComponent(key) + '=+ encodeURIComponent(value);
        };
        
    // If an array was passed in, assume that it is an array
        // of form elements
        if ( jQuery.isArray(a) || a.jquery )
            
    // Serialize the form elements
            jQuery.each( a, function(){
                add( 
    this.name, this.value );
            });

        
    // Otherwise, assume that it's an object of key/value pairs
        else
            
    // Serialize the key/values
            for ( var j in a )
                
    // If the value is an array then the key names need to be repeated
                if ( jQuery.isArray(a[j]) )
                    jQuery.each( a[j], 
    function(){
                        add( j, 
    this );
                    });
                
    else
                    add( j, jQuery.isFunction(a[j]) 
    ? a[j]() : a[j] );

        
    // Return the resulting serialization
        return s.join("&").replace(/%20/g, "+");
    }
    //jquery.param end

    上面是jQuery.param的代碼,細(xì)心點(diǎn)可以留意到encodeURIComponent這方法,這是javascript內(nèi)置的方法,對(duì)目標(biāo)字符串執(zhí)行utf-8 encode,因此,當(dāng)頁(yè)面使用gbk編碼時(shí)候,服務(wù)端會(huì)使用gbk進(jìn)行解碼,但實(shí)際提交的數(shù)據(jù)是以u(píng)tf-8編碼的,所以造成接收到內(nèi)容為亂碼或者為問(wèn)號(hào)。

    解決方法:

    encodeURIComponent會(huì)以u(píng)tf-8編碼,在gbk編碼下,可不可以以gbk進(jìn)行編碼呢?

    如果還在打encodeURIComponent主意的話(huà),那不好意思,encodeURIComponent只會(huì)utf-8編碼,并沒(méi)有其他api進(jìn)行其他編碼;不過(guò),別擔(dān)心,看看下面:

    encodeURIComponent,它是將中文、韓文等特殊字符轉(zhuǎn)換成utf-8格式的url編碼。

    escape對(duì)0-255以外的unicode值進(jìn)行編碼時(shí)輸出%u****格式,其它情況下escape,encodeURI,encodeURIComponent編碼結(jié)果相同。

    哈哈,看到希望吧?沒(méi)錯(cuò),就是用escape代替encodeURIComponent方法,不過(guò)必須注意:

    escape不編碼字符有69個(gè):*,+,-,.,/,@,_,0-9,a-z,A-Z

    encodeURIComponent不編碼字符有71個(gè):!, ',(,),*,-,.,_,~,0-9,a-z,A-Z

    使用了escape之后必須對(duì)加號(hào)進(jìn)行編碼,否則,當(dāng)內(nèi)容含有加號(hào)時(shí)候會(huì)被服務(wù)端翻譯為空格。

    終于知道解決辦法了,重寫(xiě)jquery代碼:

    jQuery.param=function( a ) {
        
    var s = [ ];
        
    var encode=function(str){
            str
    =escape(str);
            str
    =str.replace(/+/g,"%u002B");
            
    return str;
        };
        
    function add( key, value ){
            s[ s.length ] 
    = encode(key) + '=+ encode(value);
        };
        
    // If an array was passed in, assume that it is an array
        // of form elements
        if ( jQuery.isArray(a) || a.jquery )
            
    // Serialize the form elements
            jQuery.each( a, function(){
                add( 
    this.name, this.value );
            });

        
    // Otherwise, assume that it's an object of key/value pairs
        else
            
    // Serialize the key/values
            for ( var j in a )
                
    // If the value is an array then the key names need to be repeated
                if ( jQuery.isArray(a[j]) )
                    jQuery.each( a[j], 
    function(){
                        add( j, 
    this );
                    });
                
    else
                    add( j, jQuery.isFunction(a[j]) 
    ? a[j]() : a[j] );

        
    // Return the resulting serialization
        return s.join("&").replace(/%20/g, "+");
    }

    上面那段代碼并不需要在jquery的源文件重寫(xiě),可以在你項(xiàng)目的javascript貼上,覆蓋它原有的方法,不過(guò)必須在jquery加載之后。

    經(jīng)初步驗(yàn)證,上面那段代碼在utf-8編碼也可以工作正常,大概是編碼成unicode的緣故吧。

    這樣,就不是需要使用什么二次編碼,即影響前臺(tái),又影響后臺(tái)。gbk編碼下ajax post不再是問(wèn)題了,此乃是終極解決方法。哈哈。

    有興趣的可以到http://www.open-lib.com/Forum/Read_69_1.action與作者交流。

    posted @ 2010-10-18 20:08 smildlzj 閱讀(1827) | 評(píng)論 (3)編輯 收藏

    主站蜘蛛池模板: 无码专区AAAAAA免费视频| 亚洲人JIZZ日本人| 亚洲一区二区免费视频| 无码人妻一区二区三区免费视频| 亚洲日韩乱码中文无码蜜桃臀| 亚洲人成网站在线播放vr| 国产人成免费视频| 24小时日本在线www免费的| 久久国产色AV免费观看| 又硬又粗又长又爽免费看| 亚洲欧洲无卡二区视頻| 激情综合亚洲色婷婷五月| 亚洲狠狠久久综合一区77777| 国产日产亚洲系列最新| 亚洲国产免费综合| 在线观看国产情趣免费视频| 毛片大全免费观看| 皇色在线视频免费网站| 每天更新的免费av片在线观看| 最近2019中文免费字幕在线观看 | 一个人看的www免费高清| 亚洲av无码一区二区三区在线播放| 亚洲国产精品日韩在线观看| 亚洲电影中文字幕| 久久久久久亚洲精品| 亚洲国产三级在线观看| 亚洲国产精品无码一线岛国| 亚洲熟女少妇一区二区| 久久乐国产精品亚洲综合| 久久久久亚洲AV综合波多野结衣 | 亚洲AV综合色区无码一二三区| 国产成人精品日本亚洲网址| 亚洲日本国产乱码va在线观看| 久久精品国产亚洲AV无码麻豆 | 国产高清免费视频| 91免费在线播放| 国产四虎免费精品视频| 99久久免费国产精品特黄| 天天看片天天爽_免费播放| 大陆一级毛片免费视频观看| 卡1卡2卡3卡4卡5免费视频|