﻿<?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-砖头-文章分类-subversion</title><link>http://www.blogjava.net/yaozhuan/category/14920.html</link><description /><language>zh-cn</language><lastBuildDate>Wed, 28 Feb 2007 08:20:27 GMT</lastBuildDate><pubDate>Wed, 28 Feb 2007 08:20:27 GMT</pubDate><ttl>60</ttl><item><title>【转贴】Subversion权限详解 </title><link>http://www.blogjava.net/yaozhuan/articles/67969.html</link><dc:creator>砖头</dc:creator><author>砖头</author><pubDate>Wed, 06 Sep 2006 02:54:00 GMT</pubDate><guid>http://www.blogjava.net/yaozhuan/articles/67969.html</guid><wfw:comment>http://www.blogjava.net/yaozhuan/comments/67969.html</wfw:comment><comments>http://www.blogjava.net/yaozhuan/articles/67969.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/yaozhuan/comments/commentRss/67969.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yaozhuan/services/trackbacks/67969.html</trackback:ping><description><![CDATA[
		<div class="postText">
				<div class="section">
						<h2>
								<a id="id5" name="id5">
										<font size="2">1   背景假设</font>
								</a>
								<font size="2">
								</font>
						</h2>
						<p>
								<font size="2">厦门央瞬公司是一家电子元器件设备供应商，其中有个ARM部门，专门负责ARM芯片的方案设计、销售，并在北京、上海各设立了一个办事处。对于工作日志，原先采用邮件方式发给经理，但是这种方式有个缺点，那就是不具备连续性，要看以前的日志必须一封一封邮件去查看，很麻烦。于是就想到利用 Subversion， 让员工在自己电脑上编辑日志，然后利用svn传送回来，既方便员工自己编写日志，又方便对日志的归档处理，而且提交日志的时候只需要执行一下 svn update 即可，比发送邮件还要简单的多。</font>
						</p>
						<ul>
								<li>
										<p class="first">
												<font size="2">svn服务器相关信息</font>
										</p>
										<ul class="simple">
												<li>
														<font size="2">服务器地址： 192.168.0.1 </font>
												</li>
												<li>
														<font size="2">服务器OS： MS Windows 2000 Server Edition 中文版 </font>
												</li>
												<li>
														<font size="2">代码库本地目录： <tt class="docutils literal"><span class="pre">D:\svn\arm</span></tt></font>
												</li>
										</ul>
								</li>
								<li>
										<p class="first">
												<font size="2">arm部门文档的目录结构如下:</font>
										</p>
										<pre class="literal-block">
												<font size="2">arm                 部门名称
├─diary           工作日志目录
│  ├─headquarters    总部工作日志目录
│  ├─beijing         北京办日志目录
│  └─shanghai        上海办日志目录
├─ref             公司公共文件参考目录
└─temp            临时文件目录
</font>
										</pre>
								</li>
								<li>
										<p class="first">
												<font size="2">人员情况</font>
										</p>
										<ul class="simple">
												<li>
														<font size="2">morson，公司总经理，其实他不必亲自看任何东西，就连部门经理们的每周总结都不一定看。但是为了表示对他的尊敬，以及满足一下他的权力欲，还是给他开放了“阅读所有文档”的权限 </font>
												</li>
												<li>
														<font size="2">michael，arm事业部的部门经理，没事的时候喜欢弄点儿新技术，用svn来管理日志，就是他相处来的主意 </font>
												</li>
												<li>
														<font size="2">scofield，北京办人员，老员工，为人油滑难管 </font>
												</li>
												<li>
														<font size="2">lincon，上海办人员，老员工，大老实人一个 </font>
												</li>
												<li>
														<font size="2">linda，总部协调员、秘书，文笔不错，长得也不错 </font>
												</li>
												<li>
														<font size="2">rory，单片机技术员，技术支持 </font>
												</li>
										</ul>
								</li>
								<li>
										<p class="first">
												<font size="2">访问权限需求分析</font>
										</p>
										<ul class="simple">
												<li>
														<font size="2">允许总经理读取所有文件 </font>
												</li>
												<li>
														<font size="2">除部门经理外，所有其他人员，均只能看到本办事处人员工作日志 </font>
												</li>
												<li>
														<font size="2">不允许匿名访问 </font>
												</li>
												<li>
														<font size="2">ref目录只允许经理和秘书写，对其他人只读 </font>
												</li>
												<li>
														<font size="2">temp目录人人都可以写 </font>
												</li>
										</ul>
								</li>
						</ul>
				</div>
				<div class="section">
						<h2>
								<a id="id6" name="id6">
										<font size="2">2   建立代码库</font>
								</a>
								<font size="2">
								</font>
						</h2>
						<p>
								<font size="2">在服务器 <tt class="docutils literal"><span class="pre">D:\svn</span></tt> 目录下，建立 arm 代码库，命令如下:</font>
						</p>
						<pre class="literal-block">
								<font size="2">D:\svn&gt;svnadmin create arm
</font>
						</pre>
						<p>
								<font size="2">在客户机 <tt class="docutils literal"><span class="pre">F:\temp</span></tt> 目录下，建立好上述目录结构</font>
						</p>
						<p>
								<font size="2">用命令 <tt class="docutils literal"><span class="pre">F:\temp&gt;svn</span><span class="pre">import</span><span class="pre">arm</span><span class="pre">svn://192.168.0.1/arm</span></tt> 导入结构</font>
						</p>
						<p>
								<font size="2">【注意点：关于导入时候的细微差别】</font>
						</p>
				</div>
				<div class="section">
						<h2>
								<a id="id7" name="id7">
										<font size="2">3   编辑代码库基础配置文件</font>
								</a>
								<font size="2">
								</font>
						</h2>
						<p>
								<font size="2">编辑代码库 <tt class="docutils literal"><span class="pre">arm\conf\svnserve.conf</span></tt> 文件，如下:</font>
						</p>
						<pre class="literal-block">
								<font size="2">[general]
password-db = passwd.conf
anon-access = none
auth-access = write
authz-db = authz.conf
</font>
						</pre>
				</div>
				<div class="section">
						<h2>
								<a id="id8" name="id8">
										<font size="2">4   管理用户帐号</font>
								</a>
								<font size="2">
								</font>
						</h2>
						<p>
								<font size="2">新建代码库 <tt class="docutils literal"><span class="pre">arm\conf\passwd.conf</span></tt> 文件，如下:</font>
						</p>
						<pre class="literal-block">
								<font size="2">[users]
morson = ShowMeTheMoney
michael = mysecretpassword
scofield = hellolittilekiller
lincon = asyouknows111
rory = 8809117
linda = IlikeWorldCup2006
</font>
						</pre>
				</div>
				<div class="section">
						<h2>
								<a id="id9" name="id9">
										<font size="2">5   建立目录访问权限控制文件</font>
								</a>
								<font size="2">
								</font>
						</h2>
						<p>
								<font size="2">新建代码库 <tt class="docutils literal"><span class="pre">arm\conf\authz.conf</span></tt> 文件，内容如下:</font>
						</p>
						<pre class="literal-block">
								<font size="2">[groups]
g_vip = morson
g_manager = michael
g_beijing = scofield
g_shanghai = lincon
g_headquarters = rory, linda
g_docs = linda
[arm:/]
@g_manager = rw
* = r
[arm:/diary/headquarters]
@g_manager = rw
@g_headquarters = rw
@g_vip = r
* =
[arm:/diary/beijing]
@g_manager = rw
@g_beijing = rw
@g_vip = r
* =
[arm:/diary/shanghai]
@g_manager = rw
@g_shanghai = rw
@g_vip = r
* =
[arm:/ref]
@g_manager = rw
@g_docs = rw
* = r
[arm:/temp]
* = rw
</font>
						</pre>
				</div>
				<div class="section">
						<h2>
								<a id="id10" name="id10">
										<font size="2">6   测试</font>
								</a>
								<font size="2">
								</font>
						</h2>
						<p>
								<font size="2">在服务器上，打开一个 DOS Prompt 窗口，输入如下指令:</font>
						</p>
						<pre class="literal-block">
								<font size="2">svn co svn://127.0.0.1/arm --no-auth-cache --username rory --password 8809117
</font>
						</pre>
						<p>
								<font size="2">我们应该得到如下目录结构:</font>
						</p>
						<pre class="literal-block">
								<font size="2">arm
├─diary
│  └─headquarters
├─ref
└─temp
</font>
						</pre>
						<p>
								<font size="2">然后修改ref目录下任意文件并提交，服务器将会报错“Access deni”</font>
						</p>
				</div>
				<div class="section">
						<h1>
								<a id="id11" name="id11">
										<font size="2">深入</font>
								</a>
								<font size="2">
								</font>
						</h1>
						<p>
								<font size="2">本章将详细介绍前一章所涉及的两个配置文件， svnserve.conf 和 authz.conf，通过对配置逐行的描述，来阐明其中的一些细节含义。</font>
						</p>
						<p>
								<font size="2">这里首先要注意一点，任何配置文件的有效配置行，都不允许存在前置空格，否则程序会无法识别。也就是说，如果你直接从本文的纯文本格式中拷贝了相关的配置行过去，需要手动将前置的4个空格全部删除。当然了，如果你觉得一下子要删除好多行的同样数目的前置空格是一件苦差使，那么也许 UltraEdit 的“Column Mode”编辑模式，可以给你很大帮助呢。</font>
						</p>
						<div class="section">
								<h2>
										<a id="svnserve-conf" name="svnserve-conf">
												<font size="2">1   svnserve.conf</font>
										</a>
										<font size="2">
										</font>
								</h2>
								<p>
										<font size="2">
												<tt class="docutils literal">
														<span class="pre">arm\conf\svnserve.conf</span>
												</tt>文件，是 svnserve.exe 这个服务器进程的配置文件，我们逐行解释如下。</font>
								</p>
								<p>
										<font size="2">首先，我们告诉 svnserve.exe，用户名与密码放在 passwd.conf 文件下。当然，你可以改成任意的有效文件名，比如默认的就是 passwd:</font>
								</p>
								<pre class="literal-block">
										<font size="2">password-db = passwd.conf
</font>
								</pre>
								<p>
										<font size="2">接下来这两行的意思，是说只允许经过验证的用户，方可访问代码库。 那么哪些是“经过验证的”用户呢？噢，当然，就是前面说那些在 passwd.conf 文件里面持有用户名密码的家伙。这两行的等号后面，目前只允许 read write none 三种值，你如果想实现一些特殊的值，比如说“read-once”之类的，建议你自己动手改源代码，反正它也是自由软件:</font>
								</p>
								<pre class="literal-block">
										<font size="2">anon-access = none
auth-access = write
</font>
								</pre>
								<p>
										<font size="2">接下来就是最关键的一句呢，它告诉 svnserve.exe，项目目录访问权限的相关配置是放在 authz.conf 文件里:</font>
								</p>
								<pre class="literal-block">
										<font size="2">authz-db = authz.conf
</font>
								</pre>
								<p>
										<font size="2">当然，svn 1.3.2 引入本功能的时候，系统默认使用 authz 而不是 authz.conf 作为配置文件。不过由于鄙人是处女座的，有着强烈的完美主义情结，看着 svnserve.conf 有后缀而 passwd 和 authz 没有就是不爽，硬是要改了。</font>
								</p>
						</div>
						<div class="section">
								<h2>
										<a id="authz-conf" name="authz-conf">
												<font size="2">2   authz.conf 之用户分组</font>
										</a>
										<font size="2">
										</font>
								</h2>
								<p>
										<font size="2">
												<tt class="docutils literal">
														<span class="pre">arm\conf\authz.conf</span>
												</tt>文件的配置段，可以分为两类，``[group]`` 是一类，里面放置着所有用户分组信息。其余以 <tt class="docutils literal"><span class="pre">[arm:/]</span></tt> 开头的是另外一类，每一段就是对应着项目的一个目录，其目录相关权限，就在此段内设置。</font>
								</p>
								<p>
										<font size="2">首先，我们将人员分组管理，以便以后由于人员变动而需要重新设置权限时候，尽量少改动东西。我们一共设置了5个用户分组，分组名称统一采用 <tt class="docutils literal"><span class="pre">g_</span></tt> 前缀，以方便识别。当然了，分组成员之间采用逗号隔开:</font>
								</p>
								<pre class="literal-block">
										<font size="2">[groups]
# 任何想要查看所有文档的非本部门人士
g_vip = morson
# 经理
g_manager = michael
# 北京办人员
g_beijing = scofield
# 上海办人员
g_shanghai = lincon
# 总部一般员工
g_headquarters = rory, linda
# 小秘，撰写文档
g_docs = linda
</font>
								</pre>
								<p>
										<font size="2">注意到没有， linda 这个帐号同时存在“总部”和“文档员”两个分组里面，这可不是我老眼昏花写错了，是因为 svnserve.exe 允许我这样设置。它意味着，这个家伙所拥有的权限，将会比他的同事 rory 要多一些，这样的确很方便。具体多了哪些呢？请往下看！</font>
								</p>
						</div>
						<div class="section">
								<h2>
										<a id="id12" name="id12">
												<font size="2">3   authz.conf 之项目根目录</font>
										</a>
										<font size="2">
										</font>
								</h2>
								<p>
										<font size="2">接着，我们对项目根目录做了限制，该目录只允许arm事业部的经理才能修改，其他人都只能眼巴巴的看着:</font>
								</p>
								<pre class="literal-block">
										<font size="2">[arm:/]
@g_manager = rw
* = r
</font>
								</pre>
								<ul class="simple">
										<li>
												<font size="2">
														<tt class="docutils literal">
																<span class="pre">[arm:/]</span>
														</tt>表示这个目录结构的相对根节点，或者说是 arm 项目的根目录 </font>
										</li>
										<li>
												<font size="2">这里的 <tt class="docutils literal"><span class="pre">@</span></tt> 表示接下来的是一个组名，不是用户名。你当然也可以将 <tt class="docutils literal"><span class="pre">@g_manager</span><span class="pre">=</span><span class="pre">rw</span></tt> 这一行替换成 <tt class="docutils literal"><span class="pre">michael</span><span class="pre">=</span><span class="pre">rw</span></tt> ，而表达的意义完全一样。 </font>
										</li>
										<li>
												<font size="2">
														<tt class="docutils literal">
																<span class="pre">*</span>
														</tt>表示“除了上面提到的那些人之外的其余所有人”，也就是“除了部门经理外的其他所有人”，当然也包括总经理那个怪老头 </font>
										</li>
										<li>
												<font size="2">
														<tt class="docutils literal">
																<span class="pre">*</span>
																<span class="pre">=</span>
																<span class="pre">r</span>
														</tt>则表示“那些人只能读，不能写” </font>
										</li>
								</ul>
						</div>
						<div class="section">
								<h2>
										<a id="id13" name="id13">
												<font size="2">4   authz.conf 之项目子目录</font>
										</a>
										<font size="2">
										</font>
								</h2>
								<p>
										<font size="2">然后，我们要给总部人员开放日志目录的读写权限:</font>
								</p>
								<pre class="literal-block">
										<font size="2">[arm:/diary/headquarters]
@g_manager = rw
@g_headquarters = rw
@g_vip = r
* =
</font>
								</pre>
								<ul class="simple">
										<li>
												<font size="2">我敢打赌，设计svn的家伙们，大部分都是在 unix/linux 平台下工作，所以他们总喜欢使用 <tt class="docutils literal"><span class="pre">/</span></tt> 来标识子目录，而完全忽视在 MS Windows 下是用 <tt class="docutils literal"><span class="pre">\</span></tt> 来做同样的事情。所以这儿，为了表示 <tt class="docutils literal"><span class="pre">arm\diary\headquarters</span></tt> 这个目录，我们必须使用 <tt class="docutils literal"><span class="pre">[arm:/diary/headquarters]</span></tt> 这样的格式。 </font>
										</li>
										<li>
												<font size="2">这里最后一行的 <tt class="docutils literal"><span class="pre">*</span><span class="pre">=</span></tt> 表示，除了经理、总部人员、特别人士之外，任何人都被禁止访问本目录。这一行是否可以省略呢？ </font>
										</li>
										<li>
												<font size="2">之所以这儿需要将 <tt class="docutils literal"><span class="pre">@g_vip</span><span class="pre">=</span><span class="pre">r</span></tt> 一句加上，就是因为存在上述这个解释。如果说你没有明确地给总经理授予读的权力，则他会和其他人一样，被 <tt class="docutils literal"><span class="pre">*</span></tt> 给排除在外。 </font>
										</li>
										<li>
												<font size="2">如果众位看官中间，有谁玩过防火墙配置的话，可能会感觉上述的配置很熟悉。不过这里有一点与防火墙配置不一样，那就是各个配置行之间，没有 <strong>先后顺序</strong> 一说。也就是说，如果我将本段配置的 <tt class="docutils literal"><span class="pre">*</span><span class="pre">=</span></tt> 这一行挪到最前面，完全不影响整个配置的最终效果。 </font>
										</li>
										<li>
												<font size="2">请注意这儿，我们并没有给 <tt class="docutils literal"><span class="pre">arm\diary</span></tt> 目录设置权限，就直接跳到其子目录下进行设置了。我当然是故意这样的，因为我想在这儿引入“继承”的概念。 </font>
										</li>
										<li>
												<font size="2">
														<strong>权限具备继承性</strong> 任何子目录，均可继承其父目录的所有权限，除非它自己被明确设置了其他的权限。也就是说，在 arm 目录设置权限后， <tt class="docutils literal"><span class="pre">arm\diary</span></tt> 目录没有进行设置，就意味着它的权限与 arm 目录一样，都是只有经理才有权读写，其他人只能干瞪眼。 </font>
										</li>
										<li>
												<font size="2">【 * = 是否可以省略】【用例子引入覆盖】【单用户权限的继承问题】【父目录权限集成与全面覆盖问题】 </font>
										</li>
								</ul>
								<p>
										<font size="2">现在来看看</font>
								</p>
								<p>
										<font size="2">好了，我们现在掌握了“继承”的威力，它让我们节省了不少敲键盘的时间。可是现在又有一个问题了，</font>
								</p>
								<p>
										<font size="2">属性具备覆盖性质子目录若设置了属性，则完全覆盖父目录。</font>
								</p>
						</div>
						<div class="section">
								<h2>
										<a id="id14" name="id14">
												<font size="2">5   authz.conf 的其他注意点</font>
										</a>
										<font size="2">
										</font>
								</h2>
								<ol class="arabic simple">
										<li>
												<font size="2">父目录的 <tt class="docutils literal"><span class="pre">r</span></tt> 权限，对子目录 <tt class="docutils literal"><span class="pre">w</span></tt> 权限的影响 </font>
										</li>
								</ol>
								<p>
										<font size="2">把这个问题专门提出来，是因为在1.3.1及其以前的版本里面，有个bug，即为了子目录的写权限，项目首目录必须具备读权限。因此现在使用了1.3.2版本，就方便了那些想在一个代码库存放多个相互独立的项目的管理员，来分配权限了。比如说央舜公司建立一个大的代码库用于存放所有员工日志，叫做 diary，而arm事业部只是其中一个部门，则可以这样做:</font>
								</p>
								<pre class="literal-block">
										<font size="2">[diary:/]
@g_chief_manager = rw
[diary:/arm]
@g_arm_manager = rw
@g_arm = r
</font>
								</pre>
								<p>
										<font size="2">这样，对于所有arm事业部的人员来说，就可以将 svn://192.168.0.1/diary/arm 这个URL当作根目录来进行日常操作，而完全不管它其实只是一个子目录，并且当有少数好奇心比较强的人想试着 checkout 一下 svn://192.168.0.1/diary 的时候，马上就会得到一个警告“Access deni”，哇，太酷了。</font>
								</p>
								<ol class="arabic simple" start="2">
										<li>
												<font size="2">默认权限 </font>
										</li>
								</ol>
								<p>
										<font size="2">如果说我对某个目录不设置任何权限，会怎样？马上动手做个试验，将:</font>
								</p>
								<pre class="literal-block">
										<font size="2">[diary:/]
@g_chief_manager = rw
</font>
								</pre>
								<p>
										<font size="2">改成:</font>
								</p>
								<pre class="literal-block">
										<font size="2">[diary:/]
# @g_chief_manager = rw
</font>
								</pre>
								<p>
										<font size="2">这样就相当于什么都没有设置。在我的 svn 1.3.2 版本上，此时是禁止任何访问。也就是说，如果你想要让某人访问某目录，你一定要显式指明这一点。这个策略，看起来与防火墙的策略是一致的。</font>
								</p>
								<ol class="arabic simple" start="3">
										<li>
												<font size="2">只读权限带来的一个小副作用 </font>
										</li>
								</ol>
								<p>
										<font size="2">若设置了:</font>
								</p>
								<pre class="literal-block">
										<font size="2">[arm:/diary]
* = r
</font>
								</pre>
								<p>
										<font size="2">则svnserve认为，任何人，都不允许改动diary目录，包括删除和改名，和新增。</font>
								</p>
								<p>
										<font size="2">也就是说，如果你在项目初期创建目录时候，一不小心写错目录名称，比如因拼写错误写成 dairy，以后除非你改动 authz.conf 里面的这行设置，否则无法利用 svn mv 命令将错误的目录更正。</font>
								</p>
						</div>
				</div>
				<div class="section">
						<h1>
								<a id="id15" name="id15">
										<font size="2">改进</font>
								</a>
								<font size="2">
								</font>
						</h1>
						<div class="section">
								<h2>
										<a id="id16" name="id16">
												<font size="2">1   对中文目录的支持</font>
										</a>
										<font size="2">
										</font>
								</h2>
								<p>
										<font size="2">上午上班的时候，Morson 来到 Michael 的桌子前面，说道：“你是否可以将我们的北京办、上海办目录，改成用中文的，看着那些拼音我觉得很难受？” Michael 心想，还好这两天刚了解了一些与 unicode 编码相关的知识，于是微笑地回答：“当然可以，你明天下午就可以看到中文目录名称了。”</font>
								</p>
								<ol class="arabic">
										<li>
												<p class="first">
														<font size="2">使用 svn mv 指令，将原来的一些目录改名并 commit 入代码库，改名后的目录结构如下:</font>
												</p>
												<pre class="literal-block">
														<font size="2">arm
├─工作日志
│  ├─总部人员
│  ├─北京办
│  └─上海办
├─公司公共文件参考目录
└─临时文件存放处
</font>
												</pre>
										</li>
										<li>
												<p class="first">
														<font size="2">修改代码库的 authz.conf 文件，将相应目录逐一改名</font>
												</p>
										</li>
										<li>
												<p class="first">
														<font size="2">使用 UltraEdit 将 authz.conf 文件转换成不带 BOM 的 UTF-8 格式</font>
												</p>
												<p>
														<font size="2">将配置文件转换成 UTF-8 格式之后，Subversion 就能够正确识别中文字符了。但是这里需要注意一点，即必须保证 UTF-8 文件不包含 BOM 。BOM 是 Byte Order Mark 的缩写，指 UNICODE 文件头部用于指明高低字节排列顺序的几个字符，通常是 <tt class="docutils literal"><span class="pre">FF</span><span class="pre">FE</span></tt> ，而将之用 UTF-8 编码之后，就是 <tt class="docutils literal"><span class="pre">EF</span><span class="pre">BB</span><span class="pre">BF</span></tt> 。由于 UTF-8 文件本身不存在字节序问题，所以对 UTF-16 等编码方式有重大意义的 BOM，对于 UTF-8 来说，只有一个作用——表明这个文件是 UTF-8 格式。由于 BOM 会给文本处理带来很多难题，所以现在很多软件都要求使用不带 BOM 的 UTF-8 文件，特别是一些处理文本的软件，如 PHP、 UNIX 脚本文件等，svn 也是如此。</font>
												</p>
										</li>
								</ol>
								<blockquote>
										<p>
												<font size="2">目前常用的一些文本编辑工具中，MS Windows 自带的“记事本”里面，“另存为”菜单保存出来的 UTF-8 格式文件，会自动带上 BOM 。新版本 UltraEdit 提供了选项，允许用户选择是否需要 BOM，而老版本的不会添加 BOM。请各位查看一下自己常用的编辑器的说明文件，看看它是否支持这个功能。</font>
										</p>
										<p>
												<font size="2">利用 UltraEdit ，我们可以将 BOM 去掉。方法是，首先利用“UTF-8 TO ASCII”菜单将文件转换成本地编码，通常是GB2312码，然后再使用“ASCII TO UTF-8(UNICODE Editing)”来转换到 UTF-8 即可。<br /><br />                                                                                                                                   作者：郑新星 </font>
										</p>
								</blockquote>
						</div>
				</div>
		</div>
<img src ="http://www.blogjava.net/yaozhuan/aggbug/67969.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/yaozhuan/" target="_blank">砖头</a> 2006-09-06 10:54 <a href="http://www.blogjava.net/yaozhuan/articles/67969.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>