﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-vulcan-文章分类-Python编程</title><link>http://www.blogjava.net/vulcan/category/25282.html</link><description>低头做事,抬头看路</description><language>zh-cn</language><lastBuildDate>Mon, 19 Nov 2007 03:04:03 GMT</lastBuildDate><pubDate>Mon, 19 Nov 2007 03:04:03 GMT</pubDate><ttl>60</ttl><item><title>对python字符串编码的理解</title><link>http://www.blogjava.net/vulcan/articles/160978.html</link><dc:creator>vulcan</dc:creator><author>vulcan</author><pubDate>Fri, 16 Nov 2007 04:59:00 GMT</pubDate><guid>http://www.blogjava.net/vulcan/articles/160978.html</guid><wfw:comment>http://www.blogjava.net/vulcan/comments/160978.html</wfw:comment><comments>http://www.blogjava.net/vulcan/articles/160978.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/vulcan/comments/commentRss/160978.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/vulcan/services/trackbacks/160978.html</trackback:ping><description><![CDATA[用python处理html entity时,python编码时出现一些问题,见下面的代码<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;re<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />message&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #800000">'</span><span style="color: #800000">密码修改成功</span><span style="color: #800000">'</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />regex&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #800000">'</span><span style="color: #800000">(&#(\\d{5});)</span><span style="color: #800000">'</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />entities&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;re.findall(regex,&nbsp;message)<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">for</span><span style="color: #000000">&nbsp;entity&nbsp;</span><span style="color: #0000ff">in</span><span style="color: #000000">&nbsp;entities:<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;message&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;message.replace(entity[0],&nbsp;unichr(int(entity[</span><span style="color: #000000">1</span><span style="color: #000000">])))<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #008000">#</span><span style="color: #008000">print&nbsp;message&nbsp;#在pythonwin中执行没有问题,在pydev中执行报错</span><span style="color: #008000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">print</span><span style="color: #000000">&nbsp;message.encode(</span><span style="color: #800000">'</span><span style="color: #800000">gbk</span><span style="color: #800000">'</span><span style="color: #000000">)&nbsp;</span><span style="color: #008000">#</span><span style="color: #008000">正常</span></div>
为了搞清除为什么会出错,下面是我做的一些测试.<br />
下面是对'密码'两个字的一些测试,在pythonwin交互窗口中执行,虽然知道了要得到正确的中文该怎么在程序中处理,并且使得程序在pydev和pythonwin<br />
两个环境中执行都不出错,但是却还是搞不清为什么会这个样子.先记下罢.有能解释底层机制的朋友,也请留言帮个忙吧.<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #000000">&gt;&gt;&gt;</span><span style="color: #000000">&nbsp;s&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #800000">'</span><span style="color: #800000">密码</span><span style="color: #800000">'</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">&gt;&gt;&gt;</span><span style="color: #000000">&nbsp;s<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #800000">'</span><span style="color: #800000">\xc3\xdc\xc2\xeb</span><span style="color: #800000">'</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">&gt;&gt;&gt;</span><span style="color: #000000">&nbsp;su&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;u</span><span style="color: #800000">'</span><span style="color: #800000">密码</span><span style="color: #800000">'</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">&gt;&gt;&gt;</span><span style="color: #000000">&nbsp;su<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />u</span><span style="color: #800000">'</span><span style="color: #800000">\xc3\xdc\xc2\xeb</span><span style="color: #800000">'</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #008000">#</span><span style="color: #008000">u前缀表示是unicode编码,但是里面实际存储的是密码两个字的gbk编码</span><span style="color: #008000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">&gt;&gt;&gt;</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">print</span><span style="color: #000000">&nbsp;s<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />密码<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">&gt;&gt;&gt;</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">print</span><span style="color: #000000">&nbsp;su&nbsp;</span><span style="color: #008000">#</span><span style="color: #008000">在pydev和SciTE中报错,不能打印</span><span style="color: #008000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">?&#252;??<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">&gt;&gt;&gt;</span><span style="color: #000000">&nbsp;char1&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;unichr(</span><span style="color: #000000">23494</span><span style="color: #000000">)<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">&gt;&gt;&gt;</span><span style="color: #000000">&nbsp;char2&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;unichr(</span><span style="color: #000000">30721</span><span style="color: #000000">)<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">&gt;&gt;&gt;</span><span style="color: #000000">&nbsp;char1<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />u</span><span style="color: #800000">'</span><span style="color: #800000">\u5bc6</span><span style="color: #800000">'</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">&gt;&gt;&gt;</span><span style="color: #000000">&nbsp;char2<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />u</span><span style="color: #800000">'</span><span style="color: #800000">\u7801</span><span style="color: #800000">'</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">&gt;&gt;&gt;</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">print</span><span style="color: #000000">&nbsp;char1<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />密<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">&gt;&gt;&gt;</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">print</span><span style="color: #000000">&nbsp;char2<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />码<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">&gt;&gt;&gt;</span><span style="color: #000000">&nbsp;char&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;char1&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;char2<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">&gt;&gt;&gt;</span><span style="color: #000000">&nbsp;char<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />u</span><span style="color: #800000">'</span><span style="color: #800000">\u5bc6\u7801</span><span style="color: #800000">'</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">&gt;&gt;&gt;</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">print</span><span style="color: #000000">&nbsp;char&nbsp;</span><span style="color: #008000">#</span><span style="color: #008000">在pydev和SciTE中会报错为什么</span><span style="color: #008000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">密码<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">&gt;&gt;&gt;</span><span style="color: #000000">&nbsp;s.decode(</span><span style="color: #800000">'</span><span style="color: #800000">gbk</span><span style="color: #800000">'</span><span style="color: #000000">)&nbsp;</span><span style="color: #008000">#</span><span style="color: #008000">变成了unicode编码16进制</span><span style="color: #008000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">u</span><span style="color: #800000">'</span><span style="color: #800000">\u5bc6\u7801</span><span style="color: #800000">'</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">&gt;&gt;&gt;</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">print</span><span style="color: #000000">&nbsp;s.decode(</span><span style="color: #800000">'</span><span style="color: #800000">gbk</span><span style="color: #800000">'</span><span style="color: #000000">)&nbsp;</span><span style="color: #008000">#</span><span style="color: #008000">在pydev和SciTE中不能正常打印输出</span><span style="color: #008000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">密码<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">&gt;&gt;&gt;</span><span style="color: #000000">&nbsp;char.encode(</span><span style="color: #800000">'</span><span style="color: #800000">gbk</span><span style="color: #800000">'</span><span style="color: #000000">)<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #800000">'</span><span style="color: #800000">\xc3\xdc\xc2\xeb</span><span style="color: #800000">'</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">&gt;&gt;&gt;</span><span style="color: #000000">&nbsp;s<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #800000">'</span><span style="color: #800000">\xc3\xdc\xc2\xeb</span><span style="color: #800000">'</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">&gt;&gt;&gt;</span><span style="color: #000000">&nbsp;su<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />u</span><span style="color: #800000">'</span><span style="color: #800000">\xc3\xdc\xc2\xeb</span><span style="color: #800000">'</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">&gt;&gt;&gt;</span><span style="color: #000000">&nbsp;char<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />u</span><span style="color: #800000">'</span><span style="color: #800000">\u5bc6\u7801</span><span style="color: #800000">'</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">&gt;&gt;&gt;</span><span style="color: #000000">&nbsp;char.encode(</span><span style="color: #800000">'</span><span style="color: #800000">gbk</span><span style="color: #800000">'</span><span style="color: #000000">)<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #800000">'</span><span style="color: #800000">\xc3\xdc\xc2\xeb</span><span style="color: #800000">'</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">&gt;&gt;&gt;</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">print</span><span style="color: #000000">&nbsp;s<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />密码<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">&gt;&gt;&gt;</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">print</span><span style="color: #000000">&nbsp;char.encode(</span><span style="color: #800000">'</span><span style="color: #800000">gbk</span><span style="color: #800000">'</span><span style="color: #000000">)<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />密码</span></div>
<br />
Update 1:<br />
sys.setdefaultencoding()可以设置默认编码供转换时使用,但是Python启动之后这个方法会被site.py删除,因此必须reload(sys)然后调用sys.setdefaultencoding<br />
下面是我的测试方法,根据这里的结果,估计是pythonwin内启动的交互环境对参数应该有了设置,不过sys.getdefaultencoding()的返回还是默认的ascii:<br />
'修改密码成功的html entity是' "&amp;amp;#23494;&amp;amp;#30721;&amp;amp;#20462;&amp;amp;#25913;&amp;amp;#25104;&amp;amp;#21151;",在下面的python代码中在这个网页上显示不对.把&amp;amp;要换成&amp;符号<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #008000">#</span><span style="color: #008000">python&nbsp;2.4&nbsp;windows,&nbsp;execute&nbsp;in&nbsp;SciTe&nbsp;or&nbsp;Eclipse&nbsp;pydev</span><span style="color: #008000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />#</span><span style="color: #008000">Note:&nbsp;if&nbsp;you&nbsp;execute&nbsp;this&nbsp;script&nbsp;in&nbsp;pythonwin,&nbsp;the&nbsp;result&nbsp;may&nbsp;be&nbsp;different!</span><span style="color: #008000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;sys<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;re<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />reload(sys)&nbsp;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #008000">#</span><span style="color: #008000">should&nbsp;do&nbsp;this&nbsp;to&nbsp;setdefault&nbsp;encoding&nbsp;of&nbsp;sys,&nbsp;</span><span style="color: #008000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />#</span><span style="color: #008000">this&nbsp;method&nbsp;is&nbsp;deleted&nbsp;in&nbsp;site.py&nbsp;[/PYTHON_HOME/Lib]&nbsp;by&nbsp;default</span><span style="color: #008000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #008000">#</span><span style="color: #008000">try&nbsp;to&nbsp;set&nbsp;default&nbsp;encoding&nbsp;other&nbsp;than&nbsp;default&nbsp;encoding</span><span style="color: #008000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />#</span><span style="color: #008000">default&nbsp;ascii&nbsp;#&nbsp;Error:&nbsp;out&nbsp;1,&nbsp;out&nbsp;3,&nbsp;out&nbsp;6</span><span style="color: #008000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />#</span><span style="color: #008000">sys.setdefaultencoding('gbk')&nbsp;&nbsp;#all&nbsp;right,&nbsp;but&nbsp;a&nbsp;warning&nbsp;raised</span><span style="color: #008000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />#</span><span style="color: #008000">sys.setdefaultencoding('utf-8')&nbsp;&nbsp;#out&nbsp;1,&nbsp;out&nbsp;3,&nbsp;out&nbsp;6:&nbsp;unreadable&nbsp;in&nbsp;outputwindow,&nbsp;may&nbsp;be&nbsp;right&nbsp;if&nbsp;change&nbsp;the&nbsp;console&nbsp;encoding</span><span style="color: #008000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">message&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #800000">'&amp;amp;#23494;&amp;amp;#30721;&amp;amp;#20462;&amp;amp;#25913;&amp;amp;#25104;&amp;amp;#21151;</span><span style="color: #800000">'</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />regex&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #800000">'</span><span style="color: #800000">(&#(\\d{5});)</span><span style="color: #800000">'</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />entities&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;re.findall(regex,&nbsp;message)<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">for</span><span style="color: #000000">&nbsp;entity&nbsp;</span><span style="color: #0000ff">in</span><span style="color: #000000">&nbsp;entities:<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;message&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;message.replace(entity[0],&nbsp;unichr(int(entity[</span><span style="color: #000000">1</span><span style="color: #000000">])))<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #008000">#</span><span style="color: #008000">message&nbsp;:&nbsp;u'\u5bc6\u7801\u4fee\u6539\u6210\u529f'</span><span style="color: #008000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">print</span><span style="color: #000000">&nbsp;message&nbsp;</span><span style="color: #008000">#</span><span style="color: #008000">out&nbsp;1</span><span style="color: #008000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />#</span><span style="color: #008000">message.encode('gbk')&nbsp;:&nbsp;'\xc3\xdc\xc2\xeb\xd0\xde\xb8\xc4\xb3\xc9\xb9\xa6'</span><span style="color: #008000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">print</span><span style="color: #000000">&nbsp;message.encode(</span><span style="color: #800000">'</span><span style="color: #800000">gbk</span><span style="color: #800000">'</span><span style="color: #000000">)&nbsp;</span><span style="color: #008000">#</span><span style="color: #008000">out&nbsp;2</span><span style="color: #008000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">char1&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;unichr(</span><span style="color: #000000">23494</span><span style="color: #000000">)<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />char2&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;unichr(</span><span style="color: #000000">30721</span><span style="color: #000000">)<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />char&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;char1&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;char2<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #008000">#</span><span style="color: #008000">char&nbsp;:&nbsp;u'\u5bc6\u7801'</span><span style="color: #008000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">print</span><span style="color: #000000">&nbsp;char&nbsp;</span><span style="color: #008000">#</span><span style="color: #008000">out&nbsp;3</span><span style="color: #008000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />#</span><span style="color: #008000">char.encode('gbk')&nbsp;:&nbsp;'\xc3\xdc\xc2\xeb'</span><span style="color: #008000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">print</span><span style="color: #000000">&nbsp;char.encode(</span><span style="color: #800000">'</span><span style="color: #800000">gbk</span><span style="color: #800000">'</span><span style="color: #000000">)&nbsp;</span><span style="color: #008000">#</span><span style="color: #008000">out&nbsp;4</span><span style="color: #008000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">s</span><span style="color: #000000">=</span><span style="color: #800000">'</span><span style="color: #800000">密码</span><span style="color: #800000">'</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #008000">#</span><span style="color: #008000">s&nbsp;:&nbsp;'\xc3\xdc\xc2\xeb'</span><span style="color: #008000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">print</span><span style="color: #000000">&nbsp;s&nbsp;</span><span style="color: #008000">#</span><span style="color: #008000">out&nbsp;5</span><span style="color: #008000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />#</span><span style="color: #008000">s.decode('gbk')&nbsp;:&nbsp;u'\u5bc6\u7801'</span><span style="color: #008000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">print</span><span style="color: #000000">&nbsp;s.decode(</span><span style="color: #800000">'</span><span style="color: #800000">gbk</span><span style="color: #800000">'</span><span style="color: #000000">)&nbsp;</span><span style="color: #008000">#</span><span style="color: #008000">out&nbsp;6</span></div>
<img src ="http://www.blogjava.net/vulcan/aggbug/160978.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/vulcan/" target="_blank">vulcan</a> 2007-11-16 12:59 <a href="http://www.blogjava.net/vulcan/articles/160978.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>自己写的一个对svn元数据文件夹进行转换的Python脚本</title><link>http://www.blogjava.net/vulcan/articles/160607.html</link><dc:creator>vulcan</dc:creator><author>vulcan</author><pubDate>Wed, 14 Nov 2007 10:43:00 GMT</pubDate><guid>http://www.blogjava.net/vulcan/articles/160607.html</guid><wfw:comment>http://www.blogjava.net/vulcan/comments/160607.html</wfw:comment><comments>http://www.blogjava.net/vulcan/articles/160607.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/vulcan/comments/commentRss/160607.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/vulcan/services/trackbacks/160607.html</trackback:ping><description><![CDATA[<p>给Asp.Net项目应用SVN版本控制时,需要把SVN元数据文件夹由.svn改名为_svn,该了SVN客户端的设置之后,原有工程不会自动转换.如果工程特别大,而且文件夹嵌套特别多那么,可以考虑用下面的python进行转换:<br />
</p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #008080">&nbsp;1</span><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #008000">#</span><span style="color: #008000">Author&nbsp;:&nbsp;Vulcan&nbsp;Alva.yi@gmail.com</span><span style="color: #008000"><br />
</span><span style="color: #008080">&nbsp;2</span><span style="color: #008000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;os<br />
</span><span style="color: #008080">&nbsp;3</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;sys<br />
</span><span style="color: #008080">&nbsp;4</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">from</span><span style="color: #000000">&nbsp;os.path&nbsp;</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;join<br />
</span><span style="color: #008080">&nbsp;5</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #800000">'''</span><span style="color: #800000"><br />
</span><span style="color: #008080">&nbsp;6</span><span style="color: #800000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />A&nbsp;script&nbsp;for&nbsp;svn&nbsp;meta&nbsp;directory&nbsp;convert&nbsp;from&nbsp;.svn&nbsp;to&nbsp;_svn<br />
</span><span style="color: #008080">&nbsp;7</span><span style="color: #800000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #800000">'''</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;8</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">def</span><span style="color: #000000">&nbsp;convert&nbsp;():<br />
</span><span style="color: #008080">&nbsp;9</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;os.chdir(</span><span style="color: #800000">"</span><span style="color: #800000">d:\\workbench\\csx_webframe</span><span style="color: #800000">"</span><span style="color: #000000">) <span style="color: #008000">#change to your own work directory which need convert</span><br />
</span><span style="color: #008080">10</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">&nbsp;root,&nbsp;dirnames,&nbsp;files&nbsp;</span><span style="color: #0000ff">in</span><span style="color: #000000">&nbsp;os.walk(</span><span style="color: #800000">"</span><span style="color: #800000">.</span><span style="color: #800000">"</span><span style="color: #000000">):<br />
</span><span style="color: #008080">11</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">print</span><span style="color: #000000">&nbsp;</span><span style="color: #800000">"</span><span style="color: #800000">Current&nbsp;Directory:</span><span style="color: #800000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;root<br />
</span><span style="color: #008080">12</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;</span><span style="color: #800000">"</span><span style="color: #800000">_svn</span><span style="color: #800000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">in</span><span style="color: #000000">&nbsp;dirnames:<br />
</span><span style="color: #008080">13</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">print</span><span style="color: #000000">&nbsp;</span><span style="color: #800000">"</span><span style="color: #800000">Don't&nbsp;need&nbsp;convert&nbsp;for&nbsp;this&nbsp;directory.</span><span style="color: #800000">"</span><span style="color: #000000"><br />
</span><span style="color: #008080">14</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">break</span><span style="color: #000000"><br />
</span><span style="color: #008080">15</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">#</span><span style="color: #008000">dirnames.remove("_svn")</span><span style="color: #008000"><br />
</span><span style="color: #008080">16</span><span style="color: #008000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">#</span><span style="color: #008000">continue</span><span style="color: #008000"><br />
</span><span style="color: #008080">17</span><span style="color: #008000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;</span><span style="color: #800000">"</span><span style="color: #800000">.svn</span><span style="color: #800000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">in</span><span style="color: #000000">&nbsp;dirnames:&nbsp;&nbsp;</span><span style="color: #008000">#</span><span style="color: #008000">don't&nbsp;go&nbsp;to&nbsp;this&nbsp;directory</span><span style="color: #008000"><br />
</span><span style="color: #008080">18</span><span style="color: #008000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dirnames.remove(</span><span style="color: #800000">"</span><span style="color: #800000">.svn</span><span style="color: #800000">"</span><span style="color: #000000">)<br />
</span><span style="color: #008080">19</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;newname&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;join(root,&nbsp;</span><span style="color: #800000">'</span><span style="color: #800000">_svn</span><span style="color: #800000">'</span><span style="color: #000000">)<br />
</span><span style="color: #008080">20</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;oldname&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;join(root,&nbsp;</span><span style="color: #800000">'</span><span style="color: #800000">.svn</span><span style="color: #800000">'</span><span style="color: #000000">)<br />
</span><span style="color: #008080">21</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">print</span><span style="color: #000000">&nbsp;</span><span style="color: #800000">"</span><span style="color: #800000">Change&nbsp;meta&nbsp;dir&nbsp;to&nbsp;:</span><span style="color: #800000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;newname<br />
</span><span style="color: #008080">22</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;os.rename(oldname,&nbsp;newname)<br />
</span><span style="color: #008080">23</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">24</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;</span><span style="color: #800080">__name__</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;</span><span style="color: #800000">"</span><span style="color: #800000">__main__</span><span style="color: #800000">"</span><span style="color: #000000">:<br />
</span><span style="color: #008080">25</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;convert()</span></div>
<img src ="http://www.blogjava.net/vulcan/aggbug/160607.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/vulcan/" target="_blank">vulcan</a> 2007-11-14 18:43 <a href="http://www.blogjava.net/vulcan/articles/160607.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>