<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet href='http://feed.feedsky.com/styles/feedsky0.xsl' type='text/xsl' ?><!--这是一个由Feedsy提供技术支持的Feed，为了提高读者阅读的体验，以及满足用户美化自己Feed的需要，我们设计了多种精美的Feed模板，提供给大家选择，所有最终呈现出来的样式，皆由用户自愿选择使用，未经许可，任何团体和个人，请不要擅自修改样式或者盗用，这是对于用户选择权的尊重。--><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:fs="http://www.feedsky.com/namespace/feed" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" version="2.0"><channel><atom:link href="http://feed.feedsky.com/sawfish" type="application/rss+xml" ref="self"></atom:link><fs:self_link href="http://feed.feedsky.com/sawfish" type="application/rss+xml"></fs:self_link><lastBuildDate>Tue, 01 May 2007 15:46:19 GMT</lastBuildDate><title>巧言令色鲜矣仁</title><description>胡乱写些东西，日子没有白过</description><image><url>http://www.feedsky.com/feed/sawfish/sc/gif</url><title>巧言令色鲜矣仁</title><link>http://my.donews.com/sawfish</link></image><link>http://my.donews.com/sawfish</link><language>en</language><pubDate>Tue, 01 May 2007 15:46:19 GMT</pubDate><dc:date>2007-05-01T15:46:19Z</dc:date><dc:language>en</dc:language><item><title>字符集编码的识别（一）</title><link>http://item.feedsky.com/~feedsky/sawfish/~1231467/73728586/1234201/1/item.html</link><content:encoded>&lt;p&gt;读取文本文件或者接收字节流时需要搞清字符编码才能正确处理，编码识别错误是出现乱码的主要原因。理解编码识别方法之前建议阅读：&lt;a href=&quot;http://www.charset.cn/blog/2007/04/18/chaset-special-1/&quot;&gt;常用字符集编码的概要特性（一）&lt;/a&gt;和 &lt;a href=&quot;http://www.charset.cn/blog/2007/04/21/chaset-special-2/&quot;&gt;常用字符集编码的概要特性（二）&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;通过约定识别&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;为了接收字节流时能正确识别编码，很多情况下发送字节流的同时会把字节流对应的编码发送给接收方，这种情况可以理解为发送和接收双方的约定。HTTP协议就有这样的约定，浏览器就是通过约定来识别网页的编码。HTTP协议的响应头会有这样的约定：&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Content-Type: text/html;&lt;strong&gt;charset=utf-8&lt;/strong&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;如果打开一个本地的Html文件，其中也会有关于字符编码的约定：&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&amp;lt;meta http-equiv=&amp;#8221;Content-Type&amp;#8221; content=&amp;#8221;text/html; &lt;strong&gt;charset=UTF-8&lt;/strong&gt;&amp;#8220;/&amp;gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;邮件客户端程序也是通过上述约定来识别字符的，在邮件的头部有Charset的声明。&lt;/p&gt;
&lt;p&gt;UCS-2/UTF-16的BOM头也可以理解为是字符编码的约定，打开文本文件时可以用BOM来识别编码。&lt;/p&gt;
&lt;p&gt;靠约定识别编码的情形很多，例如MySQL环境中有一组变量来约定客户端SQL语句的编码以及服务器返回内容的编码。可以用SQL命令来查看这组变量：&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;show variables like &amp;#8216;%character_set%&amp;#8217;;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;如果没有约定就要尝试去猜测字符编码，以下会介绍几种猜测的方法。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;通过编码规律识别&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;UTF-8编码是UCS-2/UCS-4编码按照一定规律转换得到的，UTF-8编码本身有也具有一定规律，这种规律可以作为识别字符编码的依据。下面给出识别一个字符串是否是UTF-8编码的PHP实现：&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&amp;lt;?php&lt;br /&gt;
function isValidUtf8($string)&lt;br /&gt;
{&lt;br /&gt;
$str_len = strlen($string);&lt;br /&gt;
for($i=0;$i&amp;lt;$str_len;)&lt;br /&gt;
{&lt;br /&gt;
$str = ord($string[$i]);&lt;br /&gt;
if($str&amp;gt;=0 &amp;amp;&amp;amp; $str &amp;lt; 0&amp;#215;7f)&lt;br /&gt;
{&lt;br /&gt;
$i++;&lt;br /&gt;
continue;&lt;br /&gt;
}&lt;br /&gt;
if($str&amp;lt; 0xc0 || $str&amp;gt;0xfd) return false;&lt;br /&gt;
$count = $str&amp;gt;0xfc?5:$str&amp;gt;0xf8?4:$str&amp;gt;0xf0?3:$str&amp;gt;0xe0?2:1;&lt;br /&gt;
if($i+$count &amp;gt; $str_len) return false;&lt;br /&gt;
$i++;&lt;br /&gt;
for($m=0;$m&amp;lt;$count;$m++)&lt;br /&gt;
{&lt;br /&gt;
if(ord($string[$i])&amp;lt;0&amp;#215;80 || ord($string[$i])&amp;gt;0xbf)  return false;&lt;br /&gt;
$i++;&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
return true;&lt;br /&gt;
}&lt;br /&gt;
?&amp;gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;用此规律识别UTF-8编码会有一定误差，其他编码也会有某些字符符合UTF-8编码规律的情况。例如GBK编码的“联通”、“学习”等词就符合UTF-8编码的规律。在Windows记事本中只写入“联通”两字后直接保存，重新打开时就会看见两个黑框。原因是记事本错误地把GBK编码的“联通”两字识别为UTF-8编码了，系统字体中没有这两个识别出来的字符，所以只能看见黑框。误把其他编码当作UTF-8编码的例子很多，例如访问URL：&lt;a href=&quot;http://www.google.cn/search?q=%D1%A7%CF%B0&quot;&gt;http://www.google.cn/search?q=%D1%A7%CF%B0&lt;/a&gt;，也会看到错误结果。“%D1%A7%CF%B0”是GBK编码的“学习”，Google把它当作了UTF-8编码。&lt;/p&gt;
&lt;p&gt;供识别的字符串越长，出现这种识别错误的概率就越低。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;通过编码范围识别&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;很多字符编码不像UTF-8编码存在明显规律，例如Big5、GBK、GB2312等。识别这些编码可以使用的方法是通过编码范围来识别。例如GB2312的编码范围是0xA1A1-0&amp;#215;7E7E，如果某个字符串中有字节不在此范围内，就可以认为该字符串不是GB2312编码。&lt;/p&gt;
&lt;p&gt;通过编码范围识别的方法误差很大，原因是很多双字节编码的编码范围重合度很高，一个字符串同时落在几个编码的编码范围就很难确定。ISO-8859-1编码占用了0&amp;#215;00-0xff内所有空间，所以无法通过编码范围来识别。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;基于语义的识别&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;基于语义识别字符编码的方法的本质是把文本流当作什么编码来理解更符合语义，具体可以根据字频、词频、上下文环境等方式识别。例如某段文本中“B5C4（&amp;#8217;的&amp;#8217;字的GBK编码）”两个字节出现的频度比较高，则该段文本是GBK编码的可能性就非常大。基于语义的识别准确度取决于供识别的文本流长度和所采用的识别语料。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;字符集的识别&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;字符集编码的识别实际上有两部分，字符编码识别和字符集识别。多数情况下是识别编码，对于通用字符集（UCS）的编码（如UCS-2、UTF-8）有时需要识别字符集。例如在只希望处理中文内容的环境中，对拿到的UTF-8编码的文件就需要识别字符集，如果该文件中所有的字符都是韩文字符，就应该被抛弃。&lt;/p&gt;
&lt;p&gt;可用的字符集识别方法很多：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;通过编码转换来识别。如果把某段文本从UTF-8编码转换到GBK编码时有很多字符不能被转换，就可以认为该文件不是GBK字符集。通常编码转换程序会把不能转换的字符显示为&amp;#8217;?'。&lt;/li&gt;
&lt;li&gt;通过字符编码的范围来判断。CJK汉字在Unicode字符集中占有连续的位置，如果某个UTF-8文件中所有字符都在Unicode定义的CJK汉字区，可以认为该文件是UTF-8编码的中文文件。GBK编码包括俄文字符、日文字符等，这些字符在GBK编码中范围也是连续的。即使某个文件能从UTF-8编码正确转换到GBK编码，也有可能是UTF-8编码的俄文文件。这种情况也可以通过转换后编码的范围来判断。&lt;/li&gt;
&lt;li&gt;基于语义的识别。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;!--adsense--&gt;&lt;/p&gt;</content:encoded><wfw:commentRss>http://my.donews.com/sawfish/2007/05/01/%e5%ad%97%e7%ac%a6%e9%9b%86%e7%bc%96%e7%a0%81%e7%9a%84%e8%af%86%e5%88%ab%ef%bc%88%e4%b8%80%ef%bc%89/feed/</wfw:commentRss><description>读取文本文件或者接收字节流时需要搞清字符编码才能正确处理，编码识别错误是出现乱码的主要原因。理解编码识别方法之前建议阅读：常用字符集编码的概要特性（一）和 常用字符集编码...</description><category>字符集编码</category><pubDate>Tue, 01 May 2007 23:46:19 +0800</pubDate><author>sawfish</author><comments>http://my.donews.com/sawfish/2007/05/01/%e5%ad%97%e7%ac%a6%e9%9b%86%e7%bc%96%e7%a0%81%e7%9a%84%e8%af%86%e5%88%ab%ef%bc%88%e4%b8%80%ef%bc%89/#comments</comments><guid isPermaLink="false">http://my.donews.com/sawfish/2007/05/01/%e5%ad%97%e7%ac%a6%e9%9b%86%e7%bc%96%e7%a0%81%e7%9a%84%e8%af%86%e5%88%ab%ef%bc%88%e4%b8%80%ef%bc%89/</guid><dc:creator>sawfish</dc:creator><fs:srclink>http://my.donews.com/sawfish/2007/05/01/%e5%ad%97%e7%ac%a6%e9%9b%86%e7%bc%96%e7%a0%81%e7%9a%84%e8%af%86%e5%88%ab%ef%bc%88%e4%b8%80%ef%bc%89/</fs:srclink><fs:srcfeed>http://my.donews.com/sawfish/feed</fs:srcfeed><fs:itemid>feedsky/sawfish/~1231467/73728586/1234201</fs:itemid></item><item><title>我的另一个Blog</title><link>http://item.feedsky.com/~feedsky/sawfish/~1231467/73728587/1234201/1/item.html</link><content:encoded>&lt;p&gt;&lt;a href=&quot;http://&quot; title=&quot;http://www.charset.cn/blog/&quot;&gt;字符集编码研究[::blog::]]&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.charset.cn/blog/&quot;&gt;http://www.charset.cn/blog&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.charset.cn/&quot;&gt; RSS聚合首页&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.charset.cn/en/&quot;&gt;英文RSS聚合页面 &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.charset.cn/en/&quot;&gt; &lt;/a&gt;&lt;/p&gt;</content:encoded><wfw:commentRss>http://my.donews.com/sawfish/2007/04/24/post-070424-214042-987/feed/</wfw:commentRss><description>字符集编码研究[::blog::]]
http://www.charset.cn/blog
 RSS聚合首页
英文RSS聚合页面 
 ...</description><category>IT</category><pubDate>Tue, 24 Apr 2007 21:42:38 +0800</pubDate><author>sawfish</author><comments>http://my.donews.com/sawfish/2007/04/24/post-070424-214042-987/#comments</comments><guid isPermaLink="false">http://my.donews.com/sawfish/2007/04/24/post-070424-214042-987/</guid><dc:creator>sawfish</dc:creator><fs:srclink>http://my.donews.com/sawfish/2007/04/24/post-070424-214042-987/</fs:srclink><fs:srcfeed>http://my.donews.com/sawfish/feed</fs:srcfeed><fs:itemid>feedsky/sawfish/~1231467/73728587/1234201</fs:itemid></item><item><title>常用字符集编码的概要特性（二）</title><link>http://item.feedsky.com/~feedsky/sawfish/~1231467/73728588/1234201/1/item.html</link><content:encoded>&lt;p&gt;&lt;strong&gt;BIG5&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Big5是双字节编码，高字节编码范围是0&amp;#215;81-0xFE，低字节编码范围是0&amp;#215;40-0&amp;#215;7E和0xA1-0xFE。和GBK相比，少了低字节是0&amp;#215;80-0xA0的组合。0&amp;#215;8140-0xA0FE是保留区域，用于用户造字区。&lt;/p&gt;
&lt;p&gt;Big5收录的汉字只包括繁体汉字，不包括简体汉字，一些生僻的汉字也没有收录。GBK收录的日文假名字符、俄文字符Big5也没有收录。因为Big5当中收录的字符有限，因此有很多在Big5基础上扩展的编码，如倚天中文系统。Windows系统上使用的代码页CP950也可以理解为是对Big5的扩展，在Big5的基础上增加了7个汉字和一些符号。Big5编码对应的字符集是GBK字符集的子集，也就是说Big5收录的字符是GBK收录字符的一部分，但相同字符的编码不同。&lt;/p&gt;
&lt;p&gt;因为Big5也占用了ASCII的编码空间（低字节所使用的0&amp;#215;40-0&amp;#215;7E），所以Big5编码在一些环境下存在和GBK编码相同的问题，即低字节范围为0&amp;#215;40-0&amp;#215;7E的字符有可能会被误处理，尤其是低字节是0&amp;#215;5C（&amp;#8221;/&amp;#8221;）和0&amp;#215;7C（&amp;#8221;|&amp;#8221;）的字符。可以参考&lt;strong&gt;GBK&lt;/strong&gt;一节相应说明。&lt;/p&gt;
&lt;p&gt;尽管有些区别，大多数情况下可以把CP950当作Big5的别名。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;ISO-8859-1&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;ISO-8859-1编码是单字节编码，向下兼容ASCII，其编码范围是0&amp;#215;00-0xFF，0&amp;#215;00-0&amp;#215;7F之间完全和ASCII一致，0&amp;#215;80-0&amp;#215;9F之间是控制字符，0xA0-0xFF之间是文字符号。&lt;/p&gt;
&lt;p&gt;ISO-8859-1收录的字符除ASCII收录的字符外，还包括西欧语言、希腊语、泰语、阿拉伯语、希伯来语对应的文字符号。欧元符号出现的比较晚，没有被收录在ISO-8859-1当中。&lt;/p&gt;
&lt;p&gt;因为ISO-8859-1编码范围使用了单字节内的所有空间，在支持ISO-8859-1的系统中传输和存储其他任何编码的字节流都不会被抛弃。换言之，把其他任何编码的字节流当作ISO-8859-1编码看待都没有问题。这是个很重要的特性，&lt;a href=&quot;http://www.mysql.com&quot;&gt;MySQL&lt;/a&gt;数据库默认编码是Latin1就是利用了这个特性。ASCII编码是一个7位的容器，ISO-8859-1编码是一个8位的容器。&lt;/p&gt;
&lt;p&gt;Latin1是ISO-8859-1的别名，有些环境下写作Latin-1。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;UCS-2和UTF-16&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.unicode.org&quot;&gt;Unicode&lt;/a&gt;组织和&lt;a href=&quot;http://www.iso.org/&quot;&gt;ISO&lt;/a&gt;组织都试图定义一个超大字符集，目的是要涵盖所有语言使用的字符以及其他学科使用的一些特殊符号，这个字符集就是通用字符集（UCS，Universal Character Set）。这两个组织经过协调，虽然在各自发展，但定义的字符位置是完全一致的。ISO相应的标准是ISO 10646。Unicode和ISO 10646都在不断的发展过程中，所以会有不同的版本号来标明不同的发展阶段，每个Unicode版本号都能找到相对应的ISO 10646版本号。&lt;/p&gt;
&lt;p&gt;ISO 10646标准定义了一个31位的字符集。前两个字节的位置（0&amp;#215;0000-0xFFFD）被称为基本多语言面（Basic Multilingual Plane, BMP） ，超出两个字节的范围称作辅助语言面。BMP基本包括了所有语言中绝大多数字符，所以只要支持BMP就可以支持绝大多数场合下的应用。Unicode 3.0对应的字符集在BMP范围内。&lt;/p&gt;
&lt;p&gt;UCS字符集为每个字符分配了一个位置，通常用“U”再加上某个字符在UCS中位置的16进制数作为这个字符的UCS表示，例如“U+0041”表示字符“A”。UCS字符U+0000到U+00FF与ISO-8859-1完全一致。&lt;/p&gt;
&lt;p&gt;UCS-2、UTF-16是UCS字符集（或者说是Unicode字符集）实际应用中的具体编码方式。UCS-2是两个字节的等宽编码，因为只是使用了两个字节的编码空间，所以只能对BMP中的字符做编码。UTF-16是变长编码，用两个字节对BMP内的字符编码，用4个字节对超出BMP范围的辅助平面内的字符作编码。&lt;/p&gt;
&lt;p&gt;&lt;span&gt;UCS-2不同于GBK和Big5，它是真正的等宽编码，每个字符都使用两个字节，这个特性在字符串截断和字符数计算时非常方便。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;UTF-16是UCS-2的超集，UTF-16编码的两字节编码方式完全和UCS-2相同，也就是说在BMP的框架内UCS-2完全等同与UTF-16。实际情况当中常常把UCS-16当作UCS-2的别名。&lt;/p&gt;
&lt;p&gt;UCS-2和UTF-16在存储和传输时会使用两种不同的字节序，分别是&lt;span&gt;big endian和little endian（大尾和小尾）。例如“啊”（U+554A）用big endian表示就是0&amp;#215;554A，用little endian表示就是0&amp;#215;4A55。UCS-2和UTF-16默认的字节序是big endian方式。在传输过程中为了说明字节序需要在字节流前加上BOM（Byte order Mark），0xFEFF表示是big endian，0xFFFE表示是little endian。UCS-2BE、UCS-2LE是实际应用中使用的编码名称，对应着big endian和little endian，UTF-16BE、UTF-16LE也是如此。因为默认是BE字节序，所以可以把UCS-2当做是UCS-2BE的别名。&lt;/span&gt;&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;span&gt;在UCS编码中有一个叫做“ZERO WIDTH NO-BREAK SPACE”的字符，它的编码是U+FEFF，是个没有实际意义的字符。UCS规范建议我们在传输字节流前，先传输字符“ZERO WIDTH NO-BREAK SPACE”，如果传输的ZERO WIDTH NO-BREAK SPACE是0xFEFF就说明是big endian，反之就是little endian。&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;span&gt;UCS-2和UTF-16也可以理解为和ASCII以及ISO-8859-1兼容，在ASCII编码或者ISO-8859-1编码的每个字节前加上0&amp;#215;00，就得到相应字符的UCS-2编码。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;UCS-2和UTF-16中会使用0&amp;#215;00作为某个字符编码的一部分，某些系统会把0&amp;#215;00当作字符串结束的标志，在处理UCS-2或UTF-16编码时会出现问题。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;UTF-8&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;UTF-8是UCS字符集的另一种编码方式，UTF-16的每个单元是两个字节（16位），而UTF-8的每个单元是一个字节（8位）。UTF-16中用一个或两个双字节表示一个字符，UTF-8中用一个或几个单字节表示一个字符。&lt;/p&gt;
&lt;p&gt;可以认为UTF-8编码是根据一定规律从UCS-2转换得到的，从UCS-2到UTF-8之间有以下转换关系：&lt;/p&gt;
&lt;table border=&quot;1&quot;&gt;
&lt;tr&gt;
&lt;th&gt;UCS-2&lt;/th&gt;
&lt;th&gt;UTF-8&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;U+0000 - U+007F&lt;/td&gt;
&lt;td&gt;0&lt;em&gt;xxxxxxx&lt;/em&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;U+0080 - U+07FF&lt;/td&gt;
&lt;td&gt;110&lt;em&gt;xxxxx&lt;/em&gt; 10&lt;em&gt;xxxxxx&lt;/em&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;U+0800 - U+FFFF&lt;/td&gt;
&lt;td&gt;1110&lt;em&gt;xxxx&lt;/em&gt; 10&lt;em&gt;xxxxxx&lt;/em&gt; 10&lt;em&gt;xxxxxx&lt;/em&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;p&gt;例如“啊”字的UCS-2编码是0&amp;#215;554A，对应的二进制是&lt;strong&gt;0101 0101 0100 1010&lt;/strong&gt;，转成UTF-8编码之后的二进制是1110 &lt;strong&gt;0101 &lt;/strong&gt;10 &lt;strong&gt;010101 &lt;/strong&gt;10 &lt;strong&gt;001010&lt;/strong&gt;，对应的十六进制是0xE5958A。&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;UCS-4也是一种UCS字符集的编码方式，是使用4个字节的等宽编码，可以用UCS-4来表示BMP之外的辅助面字符。UCS-2中每两个字节前再加上0&amp;#215;0000就得到了BMP字符的UCS-4编码。从UCS-4到UTF-8也存在转换关系，根据这种转换关系，UTF-8最多可以使用六个字节来编码UCS-4。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;根据UTF-8的生成规律和UCS字符集的特性，可以看到UTF-8具有的特性：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;UTF-8完全和ASCII兼容，也就是说ASCII对应的字符在UTF-8中和ASCII编码完全一致。范围在0&amp;#215;00-0&amp;#215;7F之内的字符一定是ASCII字符，不可能是其他字符的一部分。GBK和Big5都存在的缺陷在UTF-8中是不存在的。&lt;/li&gt;
&lt;li&gt;大于U+007F的UCS字符，在UTF-8编码中至少是两个字节。&lt;/li&gt;
&lt;li&gt;UTF-8中的每个字符编码的首字节总在0&amp;#215;00-0xFD之间（不考虑UCS-4支持的情况，首字节在0&amp;#215;00-0xEF之间）。根据首字节就可以判断之后连续几个字节。&lt;/li&gt;
&lt;li&gt;非首字节的其他字节都在0&amp;#215;80-0xBF之间；0xFE和0xFF在UTF-8中没有被用到。&lt;/li&gt;
&lt;li&gt;GBK编码中的汉字字符都在UCS-2中的范围都在U+0800 - U+FFFF之间，所以每个GBK编码中的汉字字符的UTF-8编码都是3个字节。但GBK中包含的其他字符的UTF-8编码就不一定是3个字节了，如GBK中的俄文字符。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;在UTF-8的编码的传输过程中即使丢掉一个字节，根据编码规律也很容易定位丢掉的位置，不会影响到其他字符。在其他双字节编码中，一旦损失一个字节，就会影响到此字节之后的所有字符。从这点可以看出UTF-8编码非常适合作为传输编码。
&lt;p /&gt;
&lt;p&gt;&lt;!--adsense--&gt;&lt;/p&gt;</content:encoded><wfw:commentRss>http://my.donews.com/sawfish/2007/04/21/%e5%b8%b8%e7%94%a8%e5%ad%97%e7%ac%a6%e9%9b%86%e7%bc%96%e7%a0%81%e7%9a%84%e6%a6%82%e8%a6%81%e7%89%b9%e6%80%a7%ef%bc%88%e4%ba%8c%ef%bc%89/feed/</wfw:commentRss><description>BIG5
Big5是双字节编码，高字节编码范围是0&amp;#215;81-0xFE，低字节编码范围是0&amp;#215;40-0&amp;#215;7E和0xA1-0xFE。和GBK相比，少了低字节是0&amp;#215;80-0xA0的组合。0&amp;#215;8140-0xA0FE是保留区域，用于用户造字区。
Big5...</description><category>字符集编码</category><pubDate>Sat, 21 Apr 2007 22:52:39 +0800</pubDate><author>sawfish</author><comments>http://my.donews.com/sawfish/2007/04/21/%e5%b8%b8%e7%94%a8%e5%ad%97%e7%ac%a6%e9%9b%86%e7%bc%96%e7%a0%81%e7%9a%84%e6%a6%82%e8%a6%81%e7%89%b9%e6%80%a7%ef%bc%88%e4%ba%8c%ef%bc%89/#comments</comments><guid isPermaLink="false">http://my.donews.com/sawfish/2007/04/21/%e5%b8%b8%e7%94%a8%e5%ad%97%e7%ac%a6%e9%9b%86%e7%bc%96%e7%a0%81%e7%9a%84%e6%a6%82%e8%a6%81%e7%89%b9%e6%80%a7%ef%bc%88%e4%ba%8c%ef%bc%89/</guid><dc:creator>sawfish</dc:creator><fs:srclink>http://my.donews.com/sawfish/2007/04/21/%e5%b8%b8%e7%94%a8%e5%ad%97%e7%ac%a6%e9%9b%86%e7%bc%96%e7%a0%81%e7%9a%84%e6%a6%82%e8%a6%81%e7%89%b9%e6%80%a7%ef%bc%88%e4%ba%8c%ef%bc%89/</fs:srclink><fs:srcfeed>http://my.donews.com/sawfish/feed</fs:srcfeed><fs:itemid>feedsky/sawfish/~1231467/73728588/1234201</fs:itemid></item><item><title>常用字符集编码的概要特性（一）</title><link>http://item.feedsky.com/~feedsky/sawfish/~1231467/73728589/1234201/1/item.html</link><content:encoded>&lt;p&gt;搞清常用编码特性是解决字符集编码问题的基础。字符集编码的识别与转换、分析各种乱码产生的原因、编程操作各种编码字符串（例如字符数计算、截断处理）等都需要弄清楚编码的特性。&lt;/p&gt;
&lt;p&gt;了解一种字符集编码主要是要了解该编码的编码范围，编码对应的字符集（都包含哪些字符），和其他字符集编码之间的关系等。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;ASCII&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;ASCII码是7位编码，编码范围是0&amp;#215;00-0&amp;#215;7F。ASCII字符集包括英文字母、阿拉伯数字和标点符号等字符。其中0&amp;#215;00-0&amp;#215;20和0&amp;#215;7F共33个控制字符。&lt;/p&gt;
&lt;p&gt;只支持ASCII码的系统会忽略每个字节的最高位，只认为低7位是有效位。HZ字符编码就是早期为了在只支持7位ASCII系统中传输中文而设计的编码。早期很多邮件系统也只支持ASCII编码，为了传输中文邮件必须使用BASE64或者其他编码方式。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;GB2312&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;GB2312是基于区位码设计的，区位码把编码表分为94个区，每个区对应94个位，每个字符的区号和位号组合起来就是该汉字的区位码。区位码一般 用10进制数来表示，如1601就表示16区1位，对应的字符是“啊”。在区位码的区号和位号上分别加上0xA0就得到了GB2312编码。&lt;/p&gt;
&lt;p&gt;区位码中01-09区是符号、数字区，16-87区是汉字区，10-15和88-94是未定义的空白区。它将收录的汉字分成两级：第一级是常用汉字 计3755个，置于16-55区，按汉语拼音字母/笔形顺序排列；第二级汉字是次常用汉字计3008个，置于56-87区，按部首/笔画顺序排列。一级汉 字是按照拼音排序的，这个就可以得到某个拼音在一级汉字区位中的范围，很多根据汉字可以得到拼音的程序就是根据这个原理编写的。&lt;/p&gt;
&lt;p&gt;GB2312字符集中除常用简体汉字字符外还包括希腊字母、日文平假名及片假名字母、俄语西里尔字母等字符，未收录繁体中文汉字和一些生僻字。可以用繁体汉字测试某些系统是不是只支持GB2312编码。&lt;/p&gt;
&lt;p&gt;GB2312的编码范围是0xA1A1-0&amp;#215;7E7E，去掉未定义的区域之后可以理解为实际编码范围是0xA1A1-0xF7FE。&lt;/p&gt;
&lt;p&gt;EUC-CN可以理解为GB2312的别名，和GB2312完全相同。&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;区位码更应该认为是字符集的定义，定义了所收录的字符和字符位置，而GB2312及EUC-CN是实际计算机环境中支持这 种字符集的编码。HZ和ISO-2022-CN是对应区位码字符集的另外两种编码，都是用7位编码空间来支持汉字。区位码和GB2312编码的关系有点像 Unicode和UTF-8。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;GBK&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;GBK编码是GB2312编码的超集，向下完全兼容GB2312，同时GBK收录了Unicode基本多文种平面中的所有CJK汉字。同 GB2312一样，GBK也支持希腊字母、日文假名字母、俄语字母等字符，但不支持韩语中的表音字符（非汉字字符）。GBK还收录了GB2312不包含的 汉字部首符号、竖排标点符号等字符。&lt;/p&gt;
&lt;p&gt;GBK的整体编码范围是为0&amp;#215;8140-0xFEFE，不包括低字节是0×7F的组合。高字节范围是0×81-0xFE，低字节范围是0&amp;#215;40-7E和0&amp;#215;80-0xFE。&lt;/p&gt;
&lt;p&gt;低字节是0&amp;#215;40-0&amp;#215;7E的GBK字符有一定特殊性，因为这些字符占用了ASCII码的位置，这样会给一些系统带来麻烦。&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;有些系统中用0&amp;#215;40-0&amp;#215;7E中的字符（如“|”）做特殊符号，在定位这些符号时又没有判断这些符号是不是属于某个 GBK字符的低字节，这样就会造成错误判断。在支持GB2312的环境下就不存在这个问题。需要注意的是支持GBK的环境中小于0&amp;#215;80的某个字节未必就 是ASCII符号；另外就是最好选用小于0×40的ASCII符号做一些特殊符号，这样就可以快速定位，且不用担心是某个汉字的另一半。Big5编码中也存在相应问题。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;CP936和GBK的有些许差别，绝大多数情况下可以把CP936当作GBK的别名。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;GB18030&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;GB18030编码向下兼容GBK和GB2312，兼容的含义是不仅字符兼容，而且相同字符的编码也相同。GB18030收录了所有Unicode3.1中的字符，包括中国少数民族字符，GBK不支持的韩文字符等等，也可以说是世界大多民族的文字符号都被收录在内。&lt;/p&gt;
&lt;p&gt;GBK和GB2312都是双字节等宽编码，如果算上和ASCII兼容所支持的单字节，也可以理解为是单字节和双字节混合的变长编码。GB18030编码是变长编码，有单字节、双字节和四字节三种方式。&lt;/p&gt;
&lt;p&gt;GB18030的单字节编码范围是0&amp;#215;00-0&amp;#215;7F，完全等同与ASCII；双字节编码的范围和GBK相同，高字节是0&amp;#215;81-0xFE，低字节 的编码范围是0&amp;#215;40-0&amp;#215;7E和0&amp;#215;80-FE；四字节编码中第一、三字节的编码范围是0&amp;#215;81-0xFE，二、四字节是0&amp;#215;30-0&amp;#215;39。&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt; Windows中CP936代码页使用0&amp;#215;80来表示欧元符号，而在GB18030编码中没有使用0&amp;#215;80编码位，用其他位置来表示欧元符号。这可以理解为是GB18030向下兼容性上的一点小问题；也可以理解为0&amp;#215;80是CP936对GBK的扩展，而GB18030只是和GBK兼容良好。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;!--adsense--&gt;&lt;/p&gt;</content:encoded><wfw:commentRss>http://my.donews.com/sawfish/2007/04/18/%e5%b8%b8%e7%94%a8%e5%ad%97%e7%ac%a6%e9%9b%86%e7%bc%96%e7%a0%81%e7%9a%84%e6%a6%82%e8%a6%81%e7%89%b9%e6%80%a7%ef%bc%88%e4%b8%80%ef%bc%89/feed/</wfw:commentRss><description>搞清常用编码特性是解决字符集编码问题的基础。字符集编码的识别与转换、分析各种乱码产生的原因、编程操作各种编码字符串（例如字符数计算、截断处理）等都需要弄清楚编码的特性。
...</description><category>字符集编码</category><pubDate>Wed, 18 Apr 2007 23:41:05 +0800</pubDate><author>sawfish</author><comments>http://my.donews.com/sawfish/2007/04/18/%e5%b8%b8%e7%94%a8%e5%ad%97%e7%ac%a6%e9%9b%86%e7%bc%96%e7%a0%81%e7%9a%84%e6%a6%82%e8%a6%81%e7%89%b9%e6%80%a7%ef%bc%88%e4%b8%80%ef%bc%89/#comments</comments><guid isPermaLink="false">http://my.donews.com/sawfish/2007/04/18/%e5%b8%b8%e7%94%a8%e5%ad%97%e7%ac%a6%e9%9b%86%e7%bc%96%e7%a0%81%e7%9a%84%e6%a6%82%e8%a6%81%e7%89%b9%e6%80%a7%ef%bc%88%e4%b8%80%ef%bc%89/</guid><dc:creator>sawfish</dc:creator><fs:srclink>http://my.donews.com/sawfish/2007/04/18/%e5%b8%b8%e7%94%a8%e5%ad%97%e7%ac%a6%e9%9b%86%e7%bc%96%e7%a0%81%e7%9a%84%e6%a6%82%e8%a6%81%e7%89%b9%e6%80%a7%ef%bc%88%e4%b8%80%ef%bc%89/</fs:srclink><fs:srcfeed>http://my.donews.com/sawfish/feed</fs:srcfeed><fs:itemid>feedsky/sawfish/~1231467/73728589/1234201</fs:itemid></item><item><title>Cygwin环境下使用Subversion和SSH</title><link>http://item.feedsky.com/~feedsky/sawfish/~1231467/73728590/1234201/1/item.html</link><content:encoded>&lt;p&gt;&lt;a href=&quot;http://subversion.tigris.org&quot; target=&quot;_blank&quot;&gt;Subversion&lt;/a&gt;作为开源的版本控制系统，已经取代了CVS的位置。在Windows环境下使用Subversion可以直接下载安装Subversion的Windows版本，另一种方法就是使用&lt;a href=&quot;http://www.cygwin.com&quot; target=&quot;_blank&quot;&gt;Cygwin&lt;/a&gt;环境下的Subversion。Cygwin把大量的类Unix软件移植到了Win平台上，不仅包括强悍的Unix工具awk、sed、grep、find等，还包括gcc、perl、python等开发工具。&lt;/p&gt;
&lt;p&gt;Subversion既可以和Apache相结合通过http协议存取，也可以通过ssh协议来存取。本文主要介绍在Cygwin下如何配置Subversion和SSH服务器。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;配置SSH服务器&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;首先从&lt;a href=&quot;http://www.cygwin.com&quot;&gt;http://www.cygwin.com&lt;/a&gt;下载Cygwin安装程序，安装过程中一定要选择以下包，其他安装包可以根据需要来选择。&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Admin-&amp;gt;cygrunsrv&lt;br /&gt;
Devel-&amp;gt;subversion&lt;br /&gt;
Net-&amp;gt;openssh&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Cygwin安装完毕后，接着配置sshd服务器，在Cygwin Shell中运行命令：&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;ssh-host-config -y&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;提示&amp;#8221;CYGWIN=&amp;#8221;时输入：&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;tty ntsec&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;至此，ssh服务器已经配置完毕，可以通过Windows服务管理器来启动或停止ssh服务，也可以通过命令行 net [start|stop] sshd来控制。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;配置访问Svbversion服务器&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Subversion的具体使用方法可以参考&lt;a href=&quot;http://svnbook.subversion.org.cn&quot; title=&quot;http://svnbook.subversion.org.cn&quot;&gt;http://svnbook.subversion.org.cn&lt;/a&gt;上的使用手册。通过ssh访问SubVersion的方法：&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;svn co svn+ssh://servername/project&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;其他任何机器都可以通过ssh客户端来访问此Subversion服务器，用户名和密码就是这台Windows系统的用户名和密码。如果不想输入用户名和密码，可以通过配置SSH的密钥验证来实现。&lt;/p&gt;
&lt;p&gt;&lt;font&gt;&lt;strong&gt;在IDE中使用Subversion&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font&gt;可以在命令行中使用Subversion，和IDE相结合使用会更加方便。Eclipse可以通过插件来实现对Subversion的支持。&lt;a href=&quot;http://www.zend.com&quot; target=&quot;_blank&quot;&gt;Zend Studio&lt;/a&gt;是一款优秀的商业PHP IDE，也内置了对Subversion的支持。因为Zend Studio自带svn.exe命令和Cygwin提供的不兼容，所以最好把svn.exe命令改为Cygwin提供的，这样还可以使用SSH的密钥验证机制，免去输入用户名和密码的麻烦。使用Cygwin自带svn.exe时，要把C:\cygwin\bin目录加入系统环境变量的PATH当中。&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.charset.cn/blog/wp-content/uploads/2007/04/b.png&quot; title=&quot;直接链接到文件&quot;&gt;&lt;img src=&quot;http://www.charset.cn/blog/wp-content/uploads/2007/04/b.png&quot; alt=&quot;b.png&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.charset.cn/blog/wp-admin/upload.php?style=inline&amp;amp;tab=browse&amp;amp;action=view&amp;amp;ID=17&amp;amp;post_id=16&quot; id=&quot;file-link-17&quot; title=&quot;c.png&quot; class=&quot;file-link image&quot;&gt;  			&lt;img src=&quot;http://www.charset.cn/blog/wp-content/uploads/2007/04/c.png&quot; alt=&quot;c.png&quot; height=&quot;406&quot; width=&quot;319&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;!--adsense--&gt;&lt;/p&gt;</content:encoded><wfw:commentRss>http://my.donews.com/sawfish/2007/04/14/cygwin%e7%8e%af%e5%a2%83%e4%b8%8b%e4%bd%bf%e7%94%a8subversion%e5%92%8cssh/feed/</wfw:commentRss><description>Subversion作为开源的版本控制系统，已经取代了CVS的位置。在Windows环境下使用Subversion可以直接下载安装Subversion的Windows版本，另一种方法就是使用Cygwin环境下的Subversion。Cygwin把大量的类Unix软件...</description><pubDate>Sat, 14 Apr 2007 23:42:30 +0800</pubDate><author>sawfish</author><comments>http://my.donews.com/sawfish/2007/04/14/cygwin%e7%8e%af%e5%a2%83%e4%b8%8b%e4%bd%bf%e7%94%a8subversion%e5%92%8cssh/#comments</comments><guid isPermaLink="false">http://my.donews.com/sawfish/2007/04/14/cygwin%e7%8e%af%e5%a2%83%e4%b8%8b%e4%bd%bf%e7%94%a8subversion%e5%92%8cssh/</guid><dc:creator>sawfish</dc:creator><fs:srclink>http://my.donews.com/sawfish/2007/04/14/cygwin%e7%8e%af%e5%a2%83%e4%b8%8b%e4%bd%bf%e7%94%a8subversion%e5%92%8cssh/</fs:srclink><fs:srcfeed>http://my.donews.com/sawfish/feed</fs:srcfeed><fs:itemid>feedsky/sawfish/~1231467/73728590/1234201</fs:itemid></item><item><title>Vim对中文编码的支持</title><link>http://item.feedsky.com/~feedsky/sawfish/~1231467/73728591/1234201/1/item.html</link><content:encoded>&lt;p&gt;1、支持中文编码的基础 &lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.vim.org&quot; target=&quot;_blank&quot;&gt;Vim&lt;/a&gt;要更好地支持中文编码需要两个特性：+multi_byte和+iconv，可以用&lt;strong&gt;|:version|&lt;/strong&gt;命令检查当前使用的Vim是否支持，否则的话需要重新编译。 &lt;/p&gt;
&lt;p&gt;2、影响中文编码的设置项&lt;/p&gt;
&lt;p&gt;Vim中有几个选项会影响对多字节编码的支持： &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;encoding（enc）：encoding是Vim的内部使用编码，encoding的设置会影响Vim内部的Buffer、消息文字等。在Unix环境下，encoding的默认设置等于locale；Windows环境下会和当前代码页相同。在中文Windows环境下encoding的默认设置是cp936（GBK）。
&lt;li&gt;fileencodings（fenc）：Vim在打开文件时会根据fileencodings选项来识别文件编码，fileencodings可以同时设置多个编码，Vim会根据设置的顺序来猜测所打开文件的编码。
&lt;li&gt;fileencoding（fencs） ：Vim在保存新建文件时会根据fileencoding的设置编码来保存。如果是打开已有文件，Vim会根据打开文件时所识别的编码来保存，除非在保存时重新设置fileencoding。
&lt;li&gt;termencodings（tenc）：在终端环境下使用Vim时，通过termencoding项来告诉Vim终端所使用的编码。 &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;3、Vim中的编码转换&lt;/p&gt;
&lt;p&gt;Vim内部使用iconv库进行编码转换，如果这几个选项所设置的编码不一致，Vim就有可能会转换编码。打开已有文件时会从文件编码转换到encoding所设置的编码；保存文件时会从encoding设置的编码转换到fileencoding对应的编码。经常会看到Vim提示&lt;strong&gt;[已转换]&lt;/strong&gt;，这是表明Vim内部作了编码转换。终端环境下使用Vim，会从termencoding设置的编码转换到encoding设置的编码。&lt;/p&gt;
&lt;p&gt;可以用&lt;strong&gt;|:help encoding-values|&lt;/strong&gt;列出Vim支持的所有编码。&lt;/p&gt;
&lt;p&gt;4、具体应用环境的设置&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;只编辑GBK编码的文件&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;font color=&quot;#000080&quot;&gt;set fileencodings=cp936&lt;br /&gt;set fileencoding=cp936&lt;br /&gt;set encoding=cp936&lt;/font&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;只编辑UTF-8编码的中文文件&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;font color=&quot;#000080&quot;&gt;set fileencodings=utf-8&lt;br /&gt;set fileencoding=utf-8&lt;br /&gt;set encoding=cp936 或者 set encoding=utf-8&lt;/font&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;同时支持GBK和UTF-8编码&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;font color=&quot;#000080&quot;&gt;set fileencodings=ucs-bom,utf-8,cp936&lt;br /&gt;set fileencoding=utf-8&lt;br /&gt;set encoding=cp936 或者 set encoding=utf-8&lt;/font&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;&lt;font&gt;如果在终端环境下使用Vim，需要设置termencoding和终端所使用的编码一致。例如：&lt;/font&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;font color=&quot;#000080&quot;&gt;set termencoding=cp936 或者 set termencoding=utf-8&lt;/font&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;font&gt;Windows记事本编辑UTF-8编码文件时会在文件头上加上三个字节的BOM：EFBBBF。如果fileencodings中设置ucs-bom的目的就是为了能够兼容用记事本编辑的文件，不需要的话可以去掉。Vim在保存UTF-8编码的文件时会去掉BOM。去掉BOM的最大好处是在Unix下能够使用cat a b&amp;gt;c来正确合并文件，这点经常被忽略。&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font&gt;5、FAQ&lt;/font&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;font&gt;为什么在Vim中一次只能删除半个汉字？&lt;/font&gt;
&lt;p&gt;因为encoding设置错误，把encoding设置为cp936就可以解决此问题。在Unix环境下Vim会根据locale来设置默认的encoding，如果没有正确设置locale并且没有设置encoding就会一次只能删除半个汉字。&lt;/p&gt;
&lt;li&gt;VIM为什么不能输入繁体字？
&lt;p&gt;把euc-cn或者GB2312改为cp936就可以了。euc-cn是GB2312的别名，不支持繁体汉字。cp936是GBK的别名，是GB2312的超集，可以支持繁体汉字。&lt;/p&gt;
&lt;li&gt;&lt;font&gt;VIM为什么提示不能转换？&lt;/font&gt;
&lt;p&gt;&lt;font&gt;&lt;/font&gt;因为在编译Vim时没有加入iconv选项，重新编译Vim才能解决。&lt;/p&gt;
&lt;li&gt;如何打开一个GBK编码的文件并另存为UTf-8编码？
&lt;p&gt;保存文件时运行命令&lt;strong&gt;|:set fileencoding=utf-8|&lt;/strong&gt;就可以了。&lt;br /&gt;&amp;nbsp;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;!--adsense--&gt;&lt;/p&gt;</content:encoded><wfw:commentRss>http://my.donews.com/sawfish/2007/04/07/vim%e5%af%b9%e4%b8%ad%e6%96%87%e7%bc%96%e7%a0%81%e7%9a%84%e6%94%af%e6%8c%81/feed/</wfw:commentRss><description>1、支持中文编码的基础 
Vim要更好地支持中文编码需要两个特性：+multi_byte和+iconv，可以用&amp;#124;:version&amp;#124;命令检查当前使用的Vim是否支持，否则的话需要重新编译。 
2、影响中文编码的设置项
...</description><category>字符集编码</category><pubDate>Sat, 07 Apr 2007 23:43:30 +0800</pubDate><author>sawfish</author><comments>http://my.donews.com/sawfish/2007/04/07/vim%e5%af%b9%e4%b8%ad%e6%96%87%e7%bc%96%e7%a0%81%e7%9a%84%e6%94%af%e6%8c%81/#comments</comments><guid isPermaLink="false">http://my.donews.com/sawfish/2007/04/07/vim%e5%af%b9%e4%b8%ad%e6%96%87%e7%bc%96%e7%a0%81%e7%9a%84%e6%94%af%e6%8c%81/</guid><dc:creator>sawfish</dc:creator><fs:srclink>http://my.donews.com/sawfish/2007/04/07/vim%e5%af%b9%e4%b8%ad%e6%96%87%e7%bc%96%e7%a0%81%e7%9a%84%e6%94%af%e6%8c%81/</fs:srclink><fs:srcfeed>http://my.donews.com/sawfish/feed</fs:srcfeed><fs:itemid>feedsky/sawfish/~1231467/73728591/1234201</fs:itemid></item><item><title>浏览器发送URL的编码特性</title><link>http://item.feedsky.com/~feedsky/sawfish/~1231467/73728592/1234201/1/item.html</link><content:encoded>&lt;p&gt;尽管有很多规范URL的标准，例如&lt;a href=&quot;http://www.ietf.org/rfc/rfc3987.txt&quot;&gt;RFC 3987&lt;/a&gt;，但实际应用中却非常混乱。本文主要介绍浏览器发送URL到服务器的一些特性，作为开发和应用的参考。&lt;/p&gt;
&lt;p&gt;通常浏览器会用两种编码方式发送URL到服务器，分别是UTF-8和ANSI（当前系统语言设置，在Windows系统中可以理解为当前代码页）。接下来分别介绍几种常用浏览器发送URL的编码特性。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;一、直接在地址栏输入URL的情况&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;中文Windows环境下，假如直接在浏览器的地址栏输入URL：&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;http://www.charset.cn/中国.html?kw=中国&lt;/p&gt;&lt;/blockquote&gt;
&lt;ol&gt;
&lt;li&gt;IE浏览器特性&lt;br /&gt;
&lt;table border=&quot;1&quot;&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;PATH部分&lt;/th&gt;
&lt;th&gt;参数部分&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt;UTF-8模式（默认）&lt;/th&gt;
&lt;td&gt;%E4%B8%AD%E5%9B%BD.html&lt;/td&gt;
&lt;td&gt;kw=中国&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt; &lt;/td&gt;
&lt;td&gt;UTF-8编码、urlencode&lt;/td&gt;
&lt;td&gt;GBK编码、无urlencode&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt;ANSI模式&lt;/th&gt;
&lt;td&gt;中国.html&lt;/td&gt;
&lt;td&gt;kw=中国&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt; &lt;/td&gt;
&lt;td&gt;GBK编码、无urlencode&lt;/td&gt;
&lt;td&gt;GBK编码、无urlencode&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;/li&gt;
&lt;p&gt;中文Windows环境下，IE中默认发送的URL的PATH部分是UTF-8编码，参数部分是GBK编码。IE的设置选项中有一项是“&lt;em&gt;总是以 UTF-8 发送URL&lt;/em&gt;”可以改变发送URL的编码为ANSI。&lt;/p&gt;
&lt;li&gt;FireFox浏览器特性&lt;br /&gt;
&lt;table border=&quot;1&quot;&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;PATH部分&lt;/th&gt;
&lt;th&gt;参数部分&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt;UTF-8模式&lt;/th&gt;
&lt;td&gt;%E4%B8%AD%E5%9B%BD.html&lt;/td&gt;
&lt;td&gt;kw=%E4%B8%AD%E5%9B%BD&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt; &lt;/td&gt;
&lt;td&gt;UTF-8编码、urlencode&lt;/td&gt;
&lt;td&gt;UTF-8编码、urlencode&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt;ANSI模式（默认）&lt;/th&gt;
&lt;td&gt;%D6%D0%B9%FA.html&lt;/td&gt;
&lt;td&gt;kw=%D6%D0%B9%FA&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt; &lt;/td&gt;
&lt;td&gt;GBK编码、urlencode&lt;/td&gt;
&lt;td&gt;GBK编码、urlencode&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;/li&gt;
&lt;p&gt;中文Windows环境下FireFox中默认发送的URL的PATH和参数都是GBK编码，在FireFox地址栏输入“about:config”，找到选项“&lt;em&gt;network.standard-url.encode-utf8&lt;/em&gt;”，即可改变发送URL的编码方式。&lt;/p&gt;
&lt;li&gt;Opera浏览器特性&lt;br /&gt;
&lt;table border=&quot;1&quot;&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;PATH部分&lt;/th&gt;
&lt;th&gt;参数部分&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt;UTF-8模式（默认）&lt;/th&gt;
&lt;td&gt;%E4%B8%AD%E5%9B%BD.html&lt;/td&gt;
&lt;td&gt;kw=%E4%B8%AD%E5%9B%BD&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt; &lt;/td&gt;
&lt;td&gt;UTF-8编码、urlencode&lt;/td&gt;
&lt;td&gt;UTF-8编码、urlencode&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;二、来自网页中的链接&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;在不同的浏览器中打开不同编码的网页中的链接，特性也不相同。在不改变浏览器默认选项情况下访问不同编码的网页中以下链接：&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;http://www.charset.cn/中国.html?kw=中国&lt;/p&gt;&lt;/blockquote&gt;
&lt;ol&gt;
&lt;li&gt;IE浏览器特性&lt;br /&gt;
&lt;table border=&quot;1&quot;&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;PATH部分&lt;/th&gt;
&lt;th&gt;参数部分&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt;UTF-8网页&lt;/th&gt;
&lt;td&gt;%E4%B8%AD%E5%9B%BD.html&lt;/td&gt;
&lt;td&gt;kw=中国&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt; &lt;/td&gt;
&lt;td&gt;UTF-8编码、urlencode&lt;/td&gt;
&lt;td&gt;UTF-8编码、无urlencode&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt;GBK网页&lt;/th&gt;
&lt;td&gt;%E4%B8%AD%E5%9B%BD.html&lt;/td&gt;
&lt;td&gt;kw=中国&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt; &lt;/td&gt;
&lt;td&gt;UTF-8编码、urlencode&lt;/td&gt;
&lt;td&gt;GBK编码、无urlencode&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;/li&gt;
&lt;li&gt;FireFox浏览器特性&lt;br /&gt;
&lt;table border=&quot;1&quot;&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;PATH部分&lt;/th&gt;
&lt;th&gt;参数部分&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt;UTF-8网页&lt;/th&gt;
&lt;td&gt;%E4%B8%AD%E5%9B%BD.html&lt;/td&gt;
&lt;td&gt;kw=%E4%B8%AD%E5%9B%BD&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt; &lt;/td&gt;
&lt;td&gt;UTF-8编码、urlencode&lt;/td&gt;
&lt;td&gt;UTF-8编码、urlencode&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt;GBK网页&lt;/th&gt;
&lt;td&gt;%D6%D0%B9%FA.html&lt;/td&gt;
&lt;td&gt;kw=%D6%D0%B9%FA&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt; &lt;/td&gt;
&lt;td&gt;GBK编码、urlencode&lt;/td&gt;
&lt;td&gt;GBK编码、urlencode&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;如果改变IE默认选项为ANSI模式或者将FireFox改为UTF-8模式的访问结果可以自己测试。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;几点说明：&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;对于开发人员而言，一定要考虑到不同环境下URL编码的不同，才能实现系统更好的兼容性。兼容性好的系统必须要能够识别来自客户端URL的编码，才能正确处理。&lt;br /&gt;
例如在Opera浏览器地址栏直接输入“http://www.baidu.com/s?wd=我们”，就会发现不能正确访问。&lt;/li&gt;
&lt;li&gt;不同的WEB服务器对各种编码的URL处理也不相同，尽量不要使用中文字符作文件名。&lt;/li&gt;
&lt;li&gt;如果写入网页中的链接包括中文字符，最好使用urlencode处理，才能和当前网页编码无关。否则有可能不能正确访问。&lt;/li&gt;
&lt;li&gt;很多情况下浏览器的地址栏看到URL并不等同于发送到服务器的URL。要正确查看浏览器发送的到服务器URL，最好借助一些工具分析HTTP的请求头。&lt;/li&gt;
&lt;/ol&gt;</content:encoded><wfw:commentRss>http://my.donews.com/sawfish/2007/04/01/%e6%b5%8f%e8%a7%88%e5%99%a8%e5%8f%91%e9%80%81url%e7%9a%84%e7%bc%96%e7%a0%81%e7%89%b9%e6%80%a7/feed/</wfw:commentRss><description>尽管有很多规范URL的标准，例如RFC 3987，但实际应用中却非常混乱。本文主要介绍浏览器发送URL到服务器的一些特性，作为开发和应用的参考。
通常浏览器会用两种编码方式发送URL到服务器，...</description><category>字符集编码</category><pubDate>Sun, 01 Apr 2007 17:40:55 +0800</pubDate><author>sawfish</author><comments>http://my.donews.com/sawfish/2007/04/01/%e6%b5%8f%e8%a7%88%e5%99%a8%e5%8f%91%e9%80%81url%e7%9a%84%e7%bc%96%e7%a0%81%e7%89%b9%e6%80%a7/#comments</comments><guid isPermaLink="false">http://my.donews.com/sawfish/2007/04/01/%e6%b5%8f%e8%a7%88%e5%99%a8%e5%8f%91%e9%80%81url%e7%9a%84%e7%bc%96%e7%a0%81%e7%89%b9%e6%80%a7/</guid><dc:creator>sawfish</dc:creator><fs:srclink>http://my.donews.com/sawfish/2007/04/01/%e6%b5%8f%e8%a7%88%e5%99%a8%e5%8f%91%e9%80%81url%e7%9a%84%e7%bc%96%e7%a0%81%e7%89%b9%e6%80%a7/</fs:srclink><fs:srcfeed>http://my.donews.com/sawfish/feed</fs:srcfeed><fs:itemid>feedsky/sawfish/~1231467/73728592/1234201</fs:itemid></item><item><title>什么是字符集？什么是编码？</title><link>http://item.feedsky.com/~feedsky/sawfish/~1231467/73728593/1234201/1/item.html</link><content:encoded>&lt;p&gt;字符（Charcter）是文字与符号的总称，包括文字、图形符号、数学符号等。&lt;/p&gt;
&lt;p&gt;一组抽象字符的集合就是字符集（Charset）。字符集常常和一种具体的语言文字对应起来，该文字中的所有字符或者大部分常用字符就构成了该文字的字符集，比如英文字符集。一组有共同特征的字符也可以组成字符集，比如繁体汉字字符集、日文汉字字符集。字符集的子集也是字符集。&lt;/p&gt;
&lt;p&gt;计算机要处理各种字符，就需要将字符和二进制内码对应起来，这种对应关系就是字符编码（Encoding）。制定编码首先要确定字符集，并将字符集内的字符排序，然后和二进制数字对应起来。根据字符集内字符的多少，会确定用几个字节来编码。每种编码都限定了一个明确的字符集合，叫做被编码过的字符集（Coded Character Set），这是字符集的另外一个含义。通常所说的字符集大多是这个含义。&lt;/p&gt;
&lt;p&gt;因为制定编码的同时往往也制定了字符集，所以经常把字符集和编码混为一谈，具体区分细节不用细究。&lt;/p&gt;</content:encoded><wfw:commentRss>http://my.donews.com/sawfish/2007/03/31/%e4%bb%80%e4%b9%88%e6%98%af%e5%ad%97%e7%ac%a6%e9%9b%86%ef%bc%9f%e4%bb%80%e4%b9%88%e6%98%af%e7%bc%96%e7%a0%81%ef%bc%9f/feed/</wfw:commentRss><description>字符（Charcter）是文字与符号的总称，包括文字、图形符号、数学符号等。
一组抽象字符的集合就是字符集（Charset）。字符集常常和一种具体的语言文字对应起来，该文字中的所有字符或者大...</description><category>字符集编码</category><pubDate>Sat, 31 Mar 2007 21:46:59 +0800</pubDate><author>sawfish</author><comments>http://my.donews.com/sawfish/2007/03/31/%e4%bb%80%e4%b9%88%e6%98%af%e5%ad%97%e7%ac%a6%e9%9b%86%ef%bc%9f%e4%bb%80%e4%b9%88%e6%98%af%e7%bc%96%e7%a0%81%ef%bc%9f/#comments</comments><guid isPermaLink="false">http://my.donews.com/sawfish/2007/03/31/%e4%bb%80%e4%b9%88%e6%98%af%e5%ad%97%e7%ac%a6%e9%9b%86%ef%bc%9f%e4%bb%80%e4%b9%88%e6%98%af%e7%bc%96%e7%a0%81%ef%bc%9f/</guid><dc:creator>sawfish</dc:creator><fs:srclink>http://my.donews.com/sawfish/2007/03/31/%e4%bb%80%e4%b9%88%e6%98%af%e5%ad%97%e7%ac%a6%e9%9b%86%ef%bc%9f%e4%bb%80%e4%b9%88%e6%98%af%e7%bc%96%e7%a0%81%ef%bc%9f/</fs:srclink><fs:srcfeed>http://my.donews.com/sawfish/feed</fs:srcfeed><fs:itemid>feedsky/sawfish/~1231467/73728593/1234201</fs:itemid></item><item><title>欢迎！</title><link>http://item.feedsky.com/~feedsky/sawfish/~1231467/73728594/1234201/1/item.html</link><content:encoded>&lt;p&gt;欢迎来到Charset.cn！&lt;/p&gt;</content:encoded><wfw:commentRss>http://my.donews.com/sawfish/2007/03/29/%e6%ac%a2%e8%bf%8e%ef%bc%81/feed/</wfw:commentRss><description>欢迎来到Charset.cn！...</description><pubDate>Thu, 29 Mar 2007 16:27:12 +0800</pubDate><author>sawfish</author><comments>http://my.donews.com/sawfish/2007/03/29/%e6%ac%a2%e8%bf%8e%ef%bc%81/#comments</comments><guid isPermaLink="false">http://my.donews.com/sawfish/2007/03/29/%e6%ac%a2%e8%bf%8e%ef%bc%81/</guid><dc:creator>sawfish</dc:creator><fs:srclink>http://my.donews.com/sawfish/2007/03/29/%e6%ac%a2%e8%bf%8e%ef%bc%81/</fs:srclink><fs:srcfeed>http://my.donews.com/sawfish/feed</fs:srcfeed><fs:itemid>feedsky/sawfish/~1231467/73728594/1234201</fs:itemid></item><item><title>当当买的书到了</title><link>http://item.feedsky.com/~feedsky/sawfish/~1231467/73728595/1234201/1/item.html</link><content:encoded>&lt;p&gt;&lt;a href=&quot;http://www.douban.com/subject/1094540/&quot;&gt;&lt;img src=&quot;http://www.douban.com/mpic/s1456683.jpg&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://www.douban.com/subject/1440885/&quot;&gt;&lt;img src=&quot;http://www.douban.com/mpic/s1458178.jpg&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://www.douban.com/subject/1277262/&quot;&gt;&lt;img src=&quot;http://www.douban.com/mpic/s1305547.jpg&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://www.douban.com/subject/1054439/&quot;&gt;&lt;img src=&quot;http://www.douban.com/mpic/s1673245.jpg&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;谢谢cb！&lt;/p&gt;</content:encoded><wfw:commentRss>http://my.donews.com/sawfish/2006/10/30/axgtmmxeqfdboakbbcjtizcocbtahunistbe/feed/</wfw:commentRss><description>谢谢cb！...</description><category>阅读</category><pubDate>Mon, 30 Oct 2006 19:54:26 +0800</pubDate><author>sawfish</author><comments>http://my.donews.com/sawfish/2006/10/30/axgtmmxeqfdboakbbcjtizcocbtahunistbe/#comments</comments><guid isPermaLink="false">http://my.donews.com/sawfish/2006/10/30/AxGtMMxEqfDBoaKbbcjTizCocBtaHuniSTBE/</guid><dc:creator>sawfish</dc:creator><fs:srclink>http://my.donews.com/sawfish/2006/10/30/axgtmmxeqfdboakbbcjtizcocbtahunistbe/</fs:srclink><fs:srcfeed>http://my.donews.com/sawfish/feed</fs:srcfeed><fs:itemid>feedsky/sawfish/~1231467/73728595/1234201</fs:itemid></item><item><title>书签-2006.09.29</title><link>http://item.feedsky.com/~feedsky/sawfish/~1231467/73728596/1234201/1/item.html</link><content:encoded>&lt;p&gt;&lt;a href=&quot;http://interviews.solidot.org/article.pl?sid=06/06/06/0313248&quot;&gt;在 Ubuntu 之后 - 采访 Ubuntu 开发者 Daniel Silverstone&lt;/a&gt; #&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://my.opera.com/weblitz/blog/show.dml/369749&quot;&gt;伟大的程序员这样回答……&lt;/a&gt; #&lt;/p&gt;</content:encoded><wfw:commentRss>http://my.donews.com/sawfish/2006/10/29/EeQhAvBBDRuYmpukLoPShmJJkHgGiYzMcpTC/feed/</wfw:commentRss><description>在 Ubuntu 之后 - 采访 Ubuntu 开发者 Daniel Silverstone #
伟大的程序员这样回答…… #...</description><category>IT</category><pubDate>Sun, 29 Oct 2006 21:40:58 +0800</pubDate><author>sawfish</author><comments>http://my.donews.com/sawfish/2006/10/29/EeQhAvBBDRuYmpukLoPShmJJkHgGiYzMcpTC/#comments</comments><guid isPermaLink="false">http://my.donews.com/sawfish/2006/10/29/EeQhAvBBDRuYmpukLoPShmJJkHgGiYzMcpTC/</guid><dc:creator>sawfish</dc:creator><fs:srclink>http://my.donews.com/sawfish/2006/10/29/EeQhAvBBDRuYmpukLoPShmJJkHgGiYzMcpTC/</fs:srclink><fs:srcfeed>http://my.donews.com/sawfish/feed</fs:srcfeed><fs:itemid>feedsky/sawfish/~1231467/73728596/1234201</fs:itemid></item><item><title>离线播放视频指南</title><link>http://item.feedsky.com/~feedsky/sawfish/~1231467/73728597/1234201/1/item.html</link><content:encoded>&lt;p&gt;&lt;a href=&quot;http://www.youtube.com&quot;&gt;youtube&lt;/a&gt;的火爆催生了许多视频网站，像国内的&lt;a href=&quot;http://www.6room.com&quot;&gt;六间房&lt;/a&gt;、&lt;a href=&quot;http://www.tudou.com&quot;&gt;土豆网&lt;/a&gt;等。这些视频站只提供在线浏览的服务，不提供视频文件下载地址。本文整合了一些离线播放视频的资源，方便有离线播放需求的用户。&lt;/p&gt;
&lt;p&gt;1、视频网站的背后&lt;/p&gt;
&lt;p&gt;用户录制、上传的各种格式的视频文件在服务器后台通常被统一转换为flv格式的视频文件。视频播放页面里嵌入了一个Flash播放器，播放页面传给Flash播放器不同的参数从而播放不同的后台视频文件。离线播放主要是找到后台的flv格式的视频文件。&lt;/p&gt;
&lt;p&gt;2、视频文件获取&lt;/p&gt;
&lt;p&gt;以下几个网站提供了获取flv文件地址的服务，适用不同的视频网站。基本操作都是通过输入的播放页面URL得到flv文件的下载地址&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.quchao.com/video/&quot;&gt;http://www.quchao.com/video/&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://javimoya.com/blog/youtube_en.php&quot;&gt;http://javimoya.com/blog/youtube_en.php&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://keepvid.com/&quot;&gt;http://keepvid.com/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.smartpim.com/zh/vlogio/&quot;&gt;视客(Vlogio)&lt;/a&gt;是一款客户端软件，可以下载&lt;a href=&quot;http://www.youtube.com&quot;&gt;youtube&lt;/a&gt;、&lt;a href=&quot;http://video.google.com&quot;&gt;Google Video&lt;/a&gt;的视频文件。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.arrakis.es/~rggi3/youtube-dl/&quot;&gt;youtube-dl&lt;/a&gt;是用Python写的一段脚本，可以显示youtube网站flv文件地址并下载。整合其他的unix工具非常有用。&lt;/p&gt;
&lt;p&gt;3、FLV文件播放&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.martijndevisser.com/blog/article/flv-player-updated&quot;&gt;FLV Player&lt;/a&gt;是一款本地播放器，&lt;a href=&quot;http://www.mplayerhq.hu/&quot;&gt;Mplayer&lt;/a&gt;、&lt;a href=&quot;http://www.videolan.org/vlc/&quot;&gt;vlc&lt;/a&gt;也可以选用。暴风影音据说也可以，只是我从来不用。想在浏览器里嵌入Flash播放器来播放本地flv文件的话，不妨试试&lt;a href=&quot;http://www.jeroenwijering.com/?item=Flash_Video_Player&quot;&gt;Flash Video (FLV) Player&lt;/a&gt;。当然，也可以将flv文件转为其他格式并选用相应的播放器。转换工具可以试试&lt;a href=&quot;http://sourceforge.net/projects/ffmpeg&quot;&gt;FFMpeg&lt;/a&gt;。&lt;/p&gt;</content:encoded><wfw:commentRss>http://my.donews.com/sawfish/2006/10/03/yggyecudqpaflfxctoqstlqdoebkeayweafm/feed/</wfw:commentRss><description>youtube的火爆催生了许多视频网站，像国内的六间房、土豆网等。这些视频站只提供在线浏览的服务，不提供视频文件下载地址。本文整合了一些离线播放视频的资源，方便有离线播放需求的用...</description><category>IT</category><pubDate>Tue, 03 Oct 2006 23:20:18 +0800</pubDate><author>sawfish</author><comments>http://my.donews.com/sawfish/2006/10/03/yggyecudqpaflfxctoqstlqdoebkeayweafm/#comments</comments><guid isPermaLink="false">http://my.donews.com/sawfish/2006/10/03/YGGYECUDqPaflFXcTOQsTLqdoEBkeaYwEaFm/</guid><dc:creator>sawfish</dc:creator><fs:srclink>http://my.donews.com/sawfish/2006/10/03/yggyecudqpaflfxctoqstlqdoebkeayweafm/</fs:srclink><fs:srcfeed>http://my.donews.com/sawfish/feed</fs:srcfeed><fs:itemid>feedsky/sawfish/~1231467/73728597/1234201</fs:itemid></item><item><title>推荐《编码的奥秘》</title><link>http://item.feedsky.com/~feedsky/sawfish/~1231467/73728598/1234201/1/item.html</link><content:encoded>&lt;p&gt;技术书籍大多枯燥乏味、面目可憎，做出很高姿态将你拒之门外。偏偏有人能将技术书籍写得生动有趣，把冷冰冰的技术世界写得让你读起来兴趣盎然，欲罢不能。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.douban.com/subject/1024570/&quot;&gt;《编码的奥秘》&lt;/a&gt;就是这样一本美妙的书。作者是鼎鼎大名的Charles Ptezold，他以《Programming Windows》一书为人所知。该书从手电筒从发暗号说起，一步步揭示了计算机的基本原理。&lt;/p&gt;
&lt;p&gt;摘录一段&lt;a href=&quot;http://www.douban.com&quot;&gt;豆瓣&lt;/a&gt;用户&lt;a href=&quot;http://www.douban.com/people/goool/&quot;&gt;goool（又是一个四年）&lt;/a&gt;的书评：&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;从第1章到第17章，Petzold手把手地教我们用电线、开关、灯泡和继电器装配出一台计算机。这台计算机有一个8位的算术逻辑单元，64k*8的随机存储器，遵循Von Neumannt结构，把代码和数据都放入存储器中。能实现加、减、进位、借位、跳转和条件转移的功能。（当然，只是在头脑中，因为，不管是100年前还是现在，用500万个继电器来建造一台机器都是荒唐的：）虽然跟实际的计算机相比，它笨重、粗糙、丑陋，但装配的过程使我们对它有了特殊的情感。在持续进展的喜悦中，我们将灵性注入到无生命的线圈、开关和灯泡里面，看着这些冷漠的东西一点点地在我们眼前生动起来，这感觉有如创造生命一般。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;实在遗憾，遇到这本书太迟了；实在高兴，遇到了这本书！&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.douban.com/subject/1024570/&quot;&gt;&lt;img src=&quot;http://www.douban.com/mpic/s1016994.jpg&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded><wfw:commentRss>http://my.donews.com/sawfish/2006/09/07/tvckhgtiqydbbgxdxthhulemdtemecxkkfwl/feed/</wfw:commentRss><description>技术书籍大多枯燥乏味、面目可憎，做出很高姿态将你拒之门外。偏偏有人能将技术书籍写得生动有趣，把冷冰冰的技术世界写得让你读起来兴趣盎然，欲罢不能。
《编码的奥秘》就是这样一...</description><category>阅读</category><category>IT</category><pubDate>Thu, 07 Sep 2006 21:24:15 +0800</pubDate><author>sawfish</author><comments>http://my.donews.com/sawfish/2006/09/07/tvckhgtiqydbbgxdxthhulemdtemecxkkfwl/#comments</comments><guid isPermaLink="false">http://my.donews.com/sawfish/2006/09/07/tvCKhgtiQyDbBgxdXTHhuLEmDtemEcxkKFwl/</guid><dc:creator>sawfish</dc:creator><fs:srclink>http://my.donews.com/sawfish/2006/09/07/tvckhgtiqydbbgxdxthhulemdtemecxkkfwl/</fs:srclink><fs:srcfeed>http://my.donews.com/sawfish/feed</fs:srcfeed><fs:itemid>feedsky/sawfish/~1231467/73728598/1234201</fs:itemid></item><item><title>Mac mini渴望中</title><link>http://item.feedsky.com/~feedsky/sawfish/~1231467/73728599/1234201/1/item.html</link><content:encoded>&lt;p&gt;今天发工资了，是不是要搞定呢？&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://images.apple.com/macmini/images/designdimensions20060228.jpg&quot; /&gt;&lt;/p&gt;</content:encoded><wfw:commentRss>http://my.donews.com/sawfish/2006/09/06/wzaxsovqyuddswcwgbliikhadtigihtcchbx/feed/</wfw:commentRss><description>今天发工资了，是不是要搞定呢？
...</description><category>生活</category><pubDate>Wed, 06 Sep 2006 00:00:15 +0800</pubDate><author>sawfish</author><comments>http://my.donews.com/sawfish/2006/09/06/wzaxsovqyuddswcwgbliikhadtigihtcchbx/#comments</comments><guid isPermaLink="false">http://my.donews.com/sawfish/2006/09/06/WZAXsOVQyuDdSWCWgBlIIKHADTigihTCChBx/</guid><dc:creator>sawfish</dc:creator><fs:srclink>http://my.donews.com/sawfish/2006/09/06/wzaxsovqyuddswcwgbliikhadtigihtcchbx/</fs:srclink><fs:srcfeed>http://my.donews.com/sawfish/feed</fs:srcfeed><fs:itemid>feedsky/sawfish/~1231467/73728599/1234201</fs:itemid></item><item><title>字符集编码浅释（纲要）</title><link>http://item.feedsky.com/~feedsky/sawfish/~1231467/73728600/1234201/1/item.html</link><content:encoded>&lt;p&gt;早期计算机系统设计的局限和浅视给非英语语言的应用带来很大的麻烦。计算机在中国发展的历程一直伴随着同编码的斗争，直到今日，斗争依然继续，甚至愈演愈烈。国内图书市场一直没有一本有分量的书直指字符集编码的本质，揭示层层内幕，实在缺憾。根据网上书中的一些资料结合自己多年斗争的经验，整理一些编码的问题，但愿能对普通用户尤其是开发人员有些帮助。&lt;/p&gt;
&lt;p&gt;列了几点纲要，计划逐步完成：&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;1、字符集编码综述和几种常用编码分析&lt;/p&gt;
&lt;p&gt;2、编码的识别和转换&lt;/p&gt;
&lt;p&gt;3、编码的操作系统支持&lt;/p&gt;
&lt;p&gt;4、多字节编码在几种常用编程语言的应用&lt;/p&gt;
&lt;p&gt;5、web开发中的常见编码问题&lt;/p&gt;
&lt;p&gt;6、编码同数据库应用&lt;/p&gt;
&lt;p&gt;7、几种常用编辑器对编码的支持&lt;/p&gt;
&lt;p&gt;8、FAQ&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;消除乱码！&lt;/p&gt;</content:encoded><wfw:commentRss>http://my.donews.com/sawfish/2006/09/05/KmtQnZbOpRgXfBXDkVTPUbwxEliCRBIAYUvJ/feed/</wfw:commentRss><description>早期计算机系统设计的局限和浅视给非英语语言的应用带来很大的麻烦。计算机在中国发展的历程一直伴随着同编码的斗争，直到今日，斗争依然继续，甚至愈演愈烈。国内图书市场一直没有...</description><category>字符集编码</category><pubDate>Tue, 05 Sep 2006 23:44:23 +0800</pubDate><author>sawfish</author><comments>http://my.donews.com/sawfish/2006/09/05/KmtQnZbOpRgXfBXDkVTPUbwxEliCRBIAYUvJ/#comments</comments><guid isPermaLink="false">http://my.donews.com/sawfish/2006/09/05/KmtQnZbOpRgXfBXDkVTPUbwxEliCRBIAYUvJ/</guid><dc:creator>sawfish</dc:creator><fs:srclink>http://my.donews.com/sawfish/2006/09/05/KmtQnZbOpRgXfBXDkVTPUbwxEliCRBIAYUvJ/</fs:srclink><fs:srcfeed>http://my.donews.com/sawfish/feed</fs:srcfeed><fs:itemid>feedsky/sawfish/~1231467/73728600/1234201</fs:itemid></item></channel></rss>