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

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

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

    vulcan

    低頭做事,抬頭看路

       :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
      41 Posts :: 7 Stories :: 28 Comments :: 0 Trackbacks
    用python處理html entity時(shí),python編碼時(shí)出現(xiàn)一些問題,見下面的代碼
    import re
    message 
    = '密碼修改成功'
    regex 
    = '(&#(\\d{5});)'
    entities 
    = re.findall(regex, message)
    for entity in entities:
        message 
    = message.replace(entity[0], unichr(int(entity[1])))
    #print message #在pythonwin中執(zhí)行沒有問題,在pydev中執(zhí)行報(bào)錯(cuò)
    print message.encode('gbk'#正常
    為了搞清除為什么會(huì)出錯(cuò),下面是我做的一些測(cè)試.
    下面是對(duì)'密碼'兩個(gè)字的一些測(cè)試,在pythonwin交互窗口中執(zhí)行,雖然知道了要得到正確的中文該怎么在程序中處理,并且使得程序在pydev和pythonwin
    兩個(gè)環(huán)境中執(zhí)行都不出錯(cuò),但是卻還是搞不清為什么會(huì)這個(gè)樣子.先記下罷.有能解釋底層機(jī)制的朋友,也請(qǐng)留言幫個(gè)忙吧.
    >>> s = '密碼'
    >>> s
    '\xc3\xdc\xc2\xeb'
    >>> su = u'密碼'
    >>> su
    u
    '\xc3\xdc\xc2\xeb'
    #u前綴表示是unicode編碼,但是里面實(shí)際存儲(chǔ)的是密碼兩個(gè)字的gbk編碼
    >>> print s
    密碼
    >>> print su #在pydev和SciTE中報(bào)錯(cuò),不能打印
    ?ü??
    >>> char1 = unichr(23494)
    >>> char2 = unichr(30721)
    >>> char1
    u
    '\u5bc6'
    >>> char2
    u
    '\u7801'
    >>> print char1

    >>> print char2

    >>> char = char1 + char2
    >>> char
    u
    '\u5bc6\u7801'
    >>> print char #在pydev和SciTE中會(huì)報(bào)錯(cuò)為什么
    密碼
    >>> s.decode('gbk'#變成了unicode編碼16進(jìn)制
    u'\u5bc6\u7801'
    >>> print s.decode('gbk'#在pydev和SciTE中不能正常打印輸出
    密碼
    >>> char.encode('gbk')
    '\xc3\xdc\xc2\xeb'
    >>> s
    '\xc3\xdc\xc2\xeb'
    >>> su
    u
    '\xc3\xdc\xc2\xeb'
    >>> char
    u
    '\u5bc6\u7801'
    >>> char.encode('gbk')
    '\xc3\xdc\xc2\xeb'
    >>> print s
    密碼
    >>> print char.encode('gbk')
    密碼

    Update 1:
    sys.setdefaultencoding()可以設(shè)置默認(rèn)編碼供轉(zhuǎn)換時(shí)使用,但是Python啟動(dòng)之后這個(gè)方法會(huì)被site.py刪除,因此必須reload(sys)然后調(diào)用sys.setdefaultencoding
    下面是我的測(cè)試方法,根據(jù)這里的結(jié)果,估計(jì)是pythonwin內(nèi)啟動(dòng)的交互環(huán)境對(duì)參數(shù)應(yīng)該有了設(shè)置,不過sys.getdefaultencoding()的返回還是默認(rèn)的ascii:
    '修改密碼成功的html entity是' "&amp;#23494;&amp;#30721;&amp;#20462;&amp;#25913;&amp;#25104;&amp;#21151;",在下面的python代碼中在這個(gè)網(wǎng)頁上顯示不對(duì).把&amp;要換成&符號(hào)
    #python 2.4 windows, execute in SciTe or Eclipse pydev
    #
    Note: if you execute this script in pythonwin, the result may be different!
    import sys
    import re
    reload(sys) 
    #should do this to setdefault encoding of sys, 
    #
    this method is deleted in site.py [/PYTHON_HOME/Lib] by default

    #try to set default encoding other than default encoding
    #
    default ascii # Error: out 1, out 3, out 6
    #
    sys.setdefaultencoding('gbk')  #all right, but a warning raised
    #
    sys.setdefaultencoding('utf-8')  #out 1, out 3, out 6: unreadable in outputwindow, may be right if change the console encoding
    message = '&amp;#23494;&amp;#30721;&amp;#20462;&amp;#25913;&amp;#25104;&amp;#21151;'
    regex 
    = '(&#(\\d{5});)'
    entities 
    = re.findall(regex, message)
    for entity in entities:
        message 
    = message.replace(entity[0], unichr(int(entity[1])))
    #message : u'\u5bc6\u7801\u4fee\u6539\u6210\u529f'
    print message #out 1
    #
    message.encode('gbk') : '\xc3\xdc\xc2\xeb\xd0\xde\xb8\xc4\xb3\xc9\xb9\xa6'
    print message.encode('gbk'#out 2
    char1 = unichr(23494)
    char2 
    = unichr(30721)
    char 
    = char1 + char2
    #char : u'\u5bc6\u7801'
    print char #out 3
    #
    char.encode('gbk') : '\xc3\xdc\xc2\xeb'
    print char.encode('gbk'#out 4
    s='密碼'
    #s : '\xc3\xdc\xc2\xeb'
    print s #out 5
    #
    s.decode('gbk') : u'\u5bc6\u7801'
    print s.decode('gbk'#out 6
    posted on 2007-11-16 12:59 vulcan 閱讀(2466) 評(píng)論(0)  編輯  收藏 所屬分類: Python編程

    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 国产成人精品免费视频大全五级| 俄罗斯极品美女毛片免费播放| 亚洲国产综合精品| 国产一卡2卡3卡4卡2021免费观看| 亚洲免费在线视频播放| 午夜电影免费观看| 美女巨胸喷奶水视频www免费| 亚洲av福利无码无一区二区| 综合在线免费视频| 国产天堂亚洲国产碰碰| 亚洲精品中文字幕无码蜜桃| 成人免费福利视频| 美女视频黄频a免费大全视频| 久久精品国产亚洲一区二区| 久久受www免费人成_看片中文| 黄色一级免费网站| 亚洲无砖砖区免费| 亚洲精品无码久久久久AV麻豆| a级毛片免费全部播放无码| 亚洲免费福利在线视频| 亚洲国产成人五月综合网 | 精品亚洲视频在线| 亚洲精品成人片在线播放| 无码人妻精品中文字幕免费东京热| 国产成人综合亚洲一区| 亚洲AV无码码潮喷在线观看| 女人与禽交视频免费看| 免费人成在线观看视频高潮| 亚洲综合小说另类图片动图| 亚洲线精品一区二区三区影音先锋| 国产成人午夜精品免费视频| 中文在线免费不卡视频| 亚洲精品久久无码| 亚洲黄色在线观看视频| 亚洲精品色婷婷在线影院| 手机看黄av免费网址| 国产一区二区三区免费观看在线| 亚洲国产精品ⅴa在线观看| 亚洲午夜视频在线观看| 国产精品亚洲w码日韩中文| 永久在线毛片免费观看|