<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_rethink log</title><subtitle type="text">WEB项目管理/架构/LAMP/开发/测试</subtitle><id>http://feed.cnblogs.com/blog/u/60067/rss</id><updated>2012-02-14T03:29:45Z</updated><author><name>rethink</name><uri>http://www.cnblogs.com/rethink/</uri></author><generator>CNBlogs BlogServer</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/rethink/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/60067/rss"/><entry><id>http://www.cnblogs.com/rethink/archive/2012/02/13/2349683.html</id><title type="text">jQuery资料</title><summary type="text">官方文档：http://docs.jquery.com/How_jQuery_WorksjQuery 1.42 中文手册：http://jquery.org.cn/manual/jquery 使用方法：http://www.cnblogs.com/Chenfengtao/archive/2012/01/12/2320490.html50个必备的实用jQuery代码段：http://developer.51cto.com/art/201108/283390.htm入门到精通：http://developer.51cto.com/art/201005/202450.htm</summary><published>2012-02-13T09:07:00Z</published><updated>2012-02-13T09:07:00Z</updated><author><name>rethink</name><uri>http://www.cnblogs.com/rethink/</uri></author><link rel="alternate" href="http://www.cnblogs.com/rethink/archive/2012/02/13/2349683.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/rethink/archive/2012/02/13/2349683.html"/><content type="html">&lt;p&gt;官方文档：&lt;a href="http://docs.jquery.com/How_jQuery_Works"&gt;http://docs.jquery.com/How_jQuery_Works&lt;/a&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;jQuery 1.42 中文手册&amp;nbsp;：&lt;a href="http://jquery.org.cn/manual/"&gt;http://jquery.org.cn/manual/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;jquery 使用方法：&lt;a href="http://www.cnblogs.com/Chenfengtao/archive/2012/01/12/2320490.html"&gt;http://www.cnblogs.com/Chenfengtao/archive/2012/01/12/2320490.html&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div&gt;50个必备的实用jQuery代码段：&lt;a href="http://developer.51cto.com/art/201108/283390.htm"&gt;http://developer.51cto.com/art/201108/283390.htm&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;入门到精通：&lt;a href="http://developer.51cto.com/art/201005/202450.htm"&gt;http://developer.51cto.com/art/201005/202450.htm&lt;/a&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/rethink/aggbug/2349683.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/rethink/archive/2012/02/13/2349683.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/rethink/archive/2012/01/20/2290817.html</id><title type="text">哪个阶段加缓存？</title><summary type="text">加缓存会增加程序的复杂度（缓存更新策略）。而一般数据库的优化，不会增加程序的复杂度。即使是增加一些冗余字段，复杂度也不高。所以首先把数据库优化到没法再榨取性能了，之后才加缓存比较合理。</summary><published>2012-01-19T16:17:00Z</published><updated>2012-01-19T16:17:00Z</updated><author><name>rethink</name><uri>http://www.cnblogs.com/rethink/</uri></author><link rel="alternate" href="http://www.cnblogs.com/rethink/archive/2012/01/20/2290817.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/rethink/archive/2012/01/20/2290817.html"/><content type="html">&lt;div&gt;加缓存会增加程序的复杂度（缓存更新策略）。&lt;/div&gt;&lt;p&gt;而一般数据库的优化，不会增加程序的复杂度。即使是增加一些冗余字段，复杂度也不高。&lt;/p&gt;&lt;div&gt;&lt;div&gt;所以首先把数据库优化到没法再榨取性能了，之后才加缓存比较合理。&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/rethink/aggbug/2290817.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/rethink/archive/2012/01/20/2290817.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/rethink/archive/2012/01/20/2298567.html</id><title type="text">敏捷方法实践</title><summary type="text">1	开发阶段每天短会议：	每天早上9点15分举行个简短的会议。	会议内容	组长需要准备的内容： A 当天要开发的需求，注意点，难点等 B 项目的最新消息	参与者每天的会议需要交流这些信息： A我昨天做了什么 B我今天要做什么 C有什么问题妨碍我取得进展</summary><published>2012-01-19T16:11:00Z</published><updated>2012-01-19T16:11:00Z</updated><author><name>rethink</name><uri>http://www.cnblogs.com/rethink/</uri></author><link rel="alternate" href="http://www.cnblogs.com/rethink/archive/2012/01/20/2298567.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/rethink/archive/2012/01/20/2298567.html"/><content type="html">&lt;p&gt;1&lt;span  style="white-space:pre"&gt;	&lt;/span&gt;开发阶段每天短会议：&lt;/p&gt;&lt;p&gt;&lt;span  style="font-family: 'lucida Grande', Verdana; line-height: 23px; background-color: #ffffff; "&gt;&lt;/span&gt;&lt;/p&gt;&lt;div&gt;&lt;span  style="white-space:pre"&gt;	&lt;/span&gt;每天早上9点15分举行个简短的会议。&lt;/div&gt;&lt;div&gt;&lt;span  style="white-space:pre"&gt;	&lt;/span&gt;会议内容&lt;/div&gt;&lt;p&gt;&lt;span  style="white-space:pre"&gt;	&lt;/span&gt;组长需要准备的内容：&amp;nbsp;&lt;/p&gt;&lt;div&gt;&lt;span  style="white-space:pre"&gt;		&lt;/span&gt;A 当天要开发的需求，注意点，难点等&lt;/div&gt;&lt;div&gt;&lt;span  style="white-space:pre"&gt;		&lt;/span&gt;B 项目的最新消息&lt;/div&gt;&lt;p&gt;&lt;span  style="white-space:pre"&gt;	&lt;/span&gt;参与者每天的会议需要交流这些信息： &lt;/p&gt;&lt;div&gt;&lt;span  style="white-space:pre"&gt;		&lt;/span&gt;A&amp;nbsp;我昨天做了什么 &lt;/div&gt;&lt;p&gt;&lt;span  style="white-space:pre"&gt;		&lt;/span&gt;B&amp;nbsp;我今天要做什么 &lt;/p&gt;&lt;p&gt;&lt;span  style="white-space:pre"&gt;		&lt;/span&gt;C&amp;nbsp;有什么问题妨碍我取得进展&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&amp;nbsp;&lt;p&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/rethink/aggbug/2298567.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/rethink/archive/2012/01/20/2298567.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/rethink/archive/2011/12/07/2279277.html</id><title type="text">PLSQL怎样导出oracle表结构</title><summary type="text">tools-&amp;gt;export tables 是导出表结构还有数据tools-&amp;gt;export user objects是导出表结构可以用tools-&amp;gt;export tables用中间的sql inserts页面，选中create tables选项，where clause 里写入 where rownum&amp;lt;1。如果表包含有CLOB类型字段的话，sql是无法导出的。这时候可以改用PL/SQL的pde格式进行导出。</summary><published>2011-12-07T06:36:00Z</published><updated>2011-12-07T06:36:00Z</updated><author><name>rethink</name><uri>http://www.cnblogs.com/rethink/</uri></author><link rel="alternate" href="http://www.cnblogs.com/rethink/archive/2011/12/07/2279277.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/rethink/archive/2011/12/07/2279277.html"/><content type="html">&lt;div&gt;&lt;div&gt;tools-&amp;gt;export tables 是导出表结构还有数据&lt;/div&gt;&lt;div&gt;tools-&amp;gt;export user objects是导出表结构&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;可以用tools-&amp;gt;export tables&lt;/div&gt;&lt;div&gt;用中间的sql inserts页面，选中create tables选项，where clause 里写入 where rownum&amp;lt;1。&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;如果表包含有CLOB类型字段的话，sql是无法导出的。这时候可以改用PL/SQL的pde格式进行导出。&lt;/div&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/rethink/aggbug/2279277.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/rethink/archive/2011/12/07/2279277.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/rethink/archive/2011/12/07/2278859.html</id><title type="text">（转载）oracle字符集理解</title><summary type="text">版权声明：转载时请以超链接形式标明文章原始出处和作者信息及本声明http://kimva.blogbus.com/logs/8219967.htmloracle字符集理解：一．引言 ORACLE数据库字符集，即Oracle全球化支持(Globalization Support)，或即国家语言支持（NLS）其作用是用本国语言和格式来存储、处理和检索数据。利用全球化支持，ORACLE为用户提供自己熟悉的数据库母语环境，诸如日期格式、数字格式和存储序列等。Oracle可以支持多种语言及字符集，其中oracle8i支持48种语言、76个国家地域、229种字符集，而oracle9i则支持57种语言、88</summary><published>2011-12-07T02:38:00Z</published><updated>2011-12-07T02:38:00Z</updated><author><name>rethink</name><uri>http://www.cnblogs.com/rethink/</uri></author><link rel="alternate" href="http://www.cnblogs.com/rethink/archive/2011/12/07/2278859.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/rethink/archive/2011/12/07/2278859.html"/><content type="html">&lt;p  style="padding-top: 5px; padding-right: 10px; padding-bottom: 0px; padding-left: 10px; margin-top: 0px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; font-size: 12px; line-height: 21px; font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif; "&gt;&lt;a href="http://creativecommons.org/licenses/by/3.0/deed.zh" target="_blank" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-decoration: none; color: #0099cc; "&gt;版权声明&lt;/a&gt;：转载时请以超链接形式标明文章原始出处和作者信息及&lt;a href="http://bangzhuzhongxin.blogbus.com/logs/11205960.html" target="_blank" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-decoration: none; color: #0099cc; "&gt;本声明&lt;/a&gt;&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&lt;a href="http://kimva.blogbus.com/logs/8219967.html" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-decoration: none; color: #0099cc; "&gt;http://kimva.blogbus.com/logs/8219967.html&lt;/a&gt;&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&lt;/p&gt;&lt;div align="left" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif; font-size: 12px; line-height: 19px; "&gt;&lt;div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;oracle字符集理解：&lt;/div&gt;&lt;div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;一．引言&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; "&gt;ORACLE数据库字符集，即Oracle全球化支持(Globalization Support)，或即国家语言支持（NLS）其作用是用本国语言和格式来存储、处理和检索数据。利用全球化支持，ORACLE为用户提供自己熟悉的数据库母语环境，诸如日期格式、数字格式和存储序列等。Oracle可以支持多种语言及字符集，其中oracle8i支持48种语言、76个国家地域、229种字符集，而oracle9i则支持57种语言、88个国家地域、235种字符集。由于oracle字符集种类多，且在存储、检索、迁移oracle数据时多个环节与字符集的设置密切相关，因此在实际的应用中，数据库开发和管理人员经常会遇到有关oracle字符集方面的问题。本文通过以下几个方面阐述，对oracle字符集做简要分析&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; "&gt;二．字符集基本知识&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; "&gt;2.1字符集&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 实质就是按照一定的字符编码方案，对一组特定的符号，分别赋予不同数值编码的集合。Oracle数据库最早支持的编码方案是US7ASCII。&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Oracle的字符集命名遵循以下命名规则:&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Language&amp;gt;&amp;lt;bit size&amp;gt;&amp;lt;encoding&amp;gt;&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 即:&amp;nbsp; &amp;lt;语言&amp;gt;&amp;lt;比特位数&amp;gt;&amp;lt;编码&amp;gt;&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 比如: ZHS16GBK表示采用GBK编码格式、16位（两个字节）简体中文字符集&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; "&gt;2.2字符编码方案&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;2.2.1 单字节编码&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; （1）单字节7位字符集，可以定义128个字符，最常用的字符集为US7ASCII&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; （2）单字节8位字符集，可以定义256个字符，适合于欧洲大部分国家&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 例如：WE8ISO8859P1(西欧、8位、ISO标准8859P1编码)&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;2.2.2 多字节编码&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; （1）变长多字节编码&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;某些字符用一个字节表示，其它字符用两个或多个字符表示，变长多字节编码常用于对亚洲语言的支持，&amp;nbsp;&amp;nbsp; 例如日语、汉语、印地语等&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 例如：AL32UTF8（其中AL代表ALL,指适用于所有语言）、zhs16cgb231280&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; （2）定长多字节编码&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 每一个字符都使用固定长度字节的编码方案，目前oracle唯一支持的定长多字节编码是AF16UTF16，也是仅用于国家字符集&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;2.2.3 unicode编码&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Unicode是一个涵盖了目前全世界使用的所有已知字符的单一编码方案，也就是说Unicode为每一个字符提供唯一的编码。UTF-16是unicode的16位编码方式，是一种定长多字节编码，用2个字节表示一个unicode字符，AF16UTF16是UTF-16编码字符集。&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; UTF-8是unicode的8位编码方式，是一种变长多字节编码，这种编码可以用1、2、3个字节表示一个unicode字符，AL32UTF8，UTF8、UTFE是UTF-8编码字符集&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; "&gt;2.3 字符集超级&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 当一种字符集（字符集A）的编码数值包含所有另一种字符集（字符集B）的编码数值，并且两种字符集相同编码数值代表相同的字符时，则字符集A是字符集B的超级，或称字符集B是字符集A的子集。&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Oracle8i和oracle9i官方文档资料中备有子集-超级对照表（subset-superset pairs），例如：WE8ISO8859P1是WE8MSWIN1252的子集。由于US7ASCII是最早的Oracle数据库编码格式，因此有许多字符集是US7ASCII的超集，例如WE8ISO8859P1、ZHS16CGB231280、ZHS16GBK都是US7ASCII的超集。&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; "&gt;2.4 数据库字符集（oracle服务器端字符集）&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 数据库字符集在创建数据库时指定，在创建后通常不能更改。在创建数据库时，可以指定字符集(CHARACTER SET)和国家字符集(NATIONAL CHARACTER SET)。&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;2.4.1字符集&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; (1)用来存储CHAR, VARCHAR2, CLOB, LONG等类型数据&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; (2)用来标示诸如表名、列名以及PL/SQL变量等&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; (3)用来存储SQL和PL/SQL程序单元等&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;2.4.2国家字符集：&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; (1)用以存储NCHAR, NVARCHAR2, NCLOB等类型数据&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; (2)国家字符集实质上是为oracle选择的附加字符集，主要作用是为了增强oracle的字符处理能力，因为NCHAR数据类型可以提供对亚洲使用定长多字节编码的支持，而数据库字符集则不能。国家字符集在oracle9i中进行了重新定义，只能在unicode编码中的AF16UTF16和UTF8中选择，默认值是AF16UTF16&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;2.4.3查询字符集参数&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 可以查询以下数据字典或视图查看字符集设置情况&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; nls_database_parameters、props$、v$nls_parameters&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 查询结果中NLS_CHARACTERSET表示字符集，NLS_NCHAR_CHARACTERSET表示国家字符集&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;2.4.4修改数据库字符集&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 按照上文所说，数据库字符集在创建后原则上不能更改。如果需要修改字符集，通常需要导出数据库数据，重建数据库，再导入数据库数据的方式来转换，或通过ALTER DATABASE CHARACTER SET语句修改字符集，但创建数据库后修改字符集是有限制的，只有新的字符集是当前字符集的超集时才能修改数据库字符集，例如UTF8是US7ASCII的超集，修改数据库字符集可使用ALTER DATABASE CHARACTER SET UTF8。正确的修改方法如下:&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;　　$sqlplus /nolog&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;　　SQL&amp;gt;conn / as sysdba;&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;　　若此时数据库服务器已启动，则先执行SHUTDOWN IMMEDIATE命令关闭数据库服务器，然后执行以下命令:&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;　　SQL&amp;gt;STARTUP MOUNT;&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;　　SQL&amp;gt;ALTER SYSTEM ENABLE RESTRICTED SESSION;&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;　　SQL&amp;gt;ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;　　SQL&amp;gt;ALTER SYSTEM SET AQ_TM_PROCESSES=0;&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;　　SQL&amp;gt;ALTER DATABASE OPEN;&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;　　SQL&amp;gt;ALTER DATABASE CHARACTER SET ZHS16GBK;&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;　　SQL&amp;gt;ALTER DATABASE national CHARACTER SET ZHS16GBK;&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;　　SQL&amp;gt;SHUTDOWN IMMEDIATE;&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;　　SQL&amp;gt;STARTUP&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; "&gt;2.5 客户端字符集（NLS_LANG参数）&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;2.5.1客户端字符集含义&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 客户端字符集定义了客户端字符数据的编码方式，任何发自或发往客户端的字符数据均使用客户端定义的字符集编码,客户端可以看作是能与数据库直接连接的各种应用，例如sqlplus,exp/imp等。客户端字符集是通过设置NLS_LANG参数来设定的。&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;2.5.2 NLS_LANG参数格式&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; NLS_LANG=&amp;lt;language&amp;gt;_&amp;lt;territory&amp;gt;.&amp;lt;client character set&amp;gt;&amp;nbsp;&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Language:显示oracle消息,校验，日期命名&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Territory：指定默认日期、数字、货币等格式&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Client character set：指定客户端将使用的字符集&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 例如：NLS_LANG=AMERICAN_AMERICA.US7ASCII&amp;nbsp;&amp;nbsp;&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; AMERICAN是语言，AMERICA是地区，US7ASCII是客户端字符集&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;2.5.3客户端字符集设置方法&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1)UNIX环境&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $NLS_LANG=&amp;#8220;simplified chinese&amp;#8221;_china.zhs16gbk&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $export NLS_LANG&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 编辑oracle用户的profile文件&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2)Windows环境&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 编辑注册表&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Regedit.exe---HKEY_LOCAL_MACHINE---SOFTWARE---ORACLE&amp;#8212;HOME0&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;2.5.4 NLS参数查询&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Oracle提供若干NLS参数定制数据库和用户机以适应本地格式，例如有NLS_LANGUAGE,NLS_DATE_FORMAT,NLS_CALENDER等，可以通过查询以下数据字典或v$视图查看。&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; NLS_DATABASE_PARAMETERS--显示数据库当前NLS参数取值，包括数据库字符集取值&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; NLS_SESSION_PARAMETERS--显示由NLS_LANG 设置的参数，或经过alter session 改变后的参数值（不包括由NLS_LANG 设置的客户端字符集）&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; NLS_INSTANCE_PARAMETE--显示由参数文件init&amp;lt;SID&amp;gt;.ora 定义的参数V$NLS_PARAMETERS--显示数据库当前NLS参数取值&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;2.5.5修改NLS参数&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 使用下列方法可以修改NLS参数&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; （1）修改实例启动时使用的初始化参数文件&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; （2）修改环境变量NLS_LANG&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; （3）使用ALTER SESSION语句，在oracle会话中修改&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; （4）使用某些SQL函数&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; NLS作用优先级别：Sql function&amp;gt;alter session&amp;gt;环境变量或注册表&amp;gt;参数文件&amp;gt;数据库默认参数&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; "&gt;三．导入/导出与字符集转换&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; "&gt;3.1 EXP/IMP&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Export 和 Import 是一对读写Oracle数据的工具。Export 将 Oracle 数据库中的数据输出到操作系统文件中, Import 把这些文件中的数据读到Oracle 数据库中，由于使用exp/imp进行数据迁移时，数据从源数据库到目标数据库的过程中有四个环节涉及到字符集，如果这四个环节的字符集不一致，将会发生字符集转换。&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; "&gt;EXP&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p align="center" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; "&gt;&lt;img src="http://www.csdb.cn/upload/112.bmp" border="0" alt="" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; "&gt;IMP&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p align="center" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; "&gt;&lt;img src="http://www.csdb.cn/upload/113.bmp" border="0" alt="" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; "&gt;四个字符集是&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&amp;nbsp;&amp;nbsp; （1）源数据库字符集&amp;nbsp;&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&amp;nbsp;&amp;nbsp; （2）Export过程中用户会话字符集（通过NLS_LANG设定）&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&amp;nbsp;&amp;nbsp; （3）Import过程中用户会话字符集（通过NLS_LANG设定）&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&amp;nbsp;&amp;nbsp; （4）目标数据库字符集&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; "&gt;3.2导出的转换过程&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 在Export过程中，如果源数据库字符集与Export用户会话字符集不一致，会发生字符集转换，并在导出文件的头部几个字节中存储Export用户会话字符集的ID号。在这个转换过程中可能发生数据的丢失。&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;例:如果源数据库使用ZHS16GBK，而Export用户会话字符集使用US7ASCII，由于ZHS16GBK是16位字符集,而US7ASCII是7位字符集，这个转换过程中，中文字符在US7ASCII中不能够找到对等的字符，所以所有中文字符都会丢失而变成&amp;#8220;?? &amp;#8221;形式，这样转换后生成的Dmp文件已经发生了数据丢失。&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;因此如果想正确导出源数据库数据，则Export过程中用户会话字符集应等于源数据库字符集或是源数据库字符集的超集&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;3.2.1 修改dmp文件字符集&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;　　上文说过，dmp文件的第2第3字节记录了字符集信息，因此直接修改dmp文件的第2第3字节的内容就可以&amp;#8216;骗&amp;#8217;过oracle的检查。这样做理论上也仅是从子集到超集可以修改，但很多情况下在没有子集和超集关系的情况下也可以修改，我们常用的一些字符集，如US7ASCII，WE8ISO8859P1，ZHS16CGB231280，ZHS16GBK基本都可以改。因为改的只是dmp文件，所以影响不大。&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;　　具体的修改方法比较多，最简单的就是直接用UltraEdit修改dmp文件的第2和第3个字节。比如想将dmp文件的字符集改为ZHS16GBK，可以用以下SQL查出该种字符集对应的16进制代码:&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;　　SQL&amp;gt; select to_char(nls_charset_id('ZHS16GBK'), 'xxxx') from dual;&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;　　0354&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;　　然后将dmp文件的2、3字节修改为0354即可。&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;　　如果dmp文件很大，用ue无法打开，就需要用程序的方法了。网上有人用java存储过程写了转换的程序(用java存储过程的好处是通用性教好，缺点是比较麻烦)。我在windows下测试通过。但要求oracle数据库一定要安装JVM选项。有兴趣的朋友可以研究一下程序代码&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; "&gt;3.3导入的转换过程&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; （1）确定导出数据库字符集环境&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 通过读取导出文件头，可以获得导出文件的字符集设置&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; （2）确定导入session的字符集，即导入Session使用的NLS_LANG环境变量&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; （3）IMP读取导出文件&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 读取导出文件字符集ID，和导入进程的NLS_LANG进行比较&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; （4）如果导出文件字符集和导入Session字符集相同，那么在这一步骤内就不需要转换，如果不同，就需要把数据转换为导入Session使用的字符集。可以看出，导入数据到数据库过程中发生两次字符集转换&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 第一次:导入文件字符集与导入Session使用的字符集之间的转换，如果这个转换过程不能正确完成，Import向目标数据库的导入过程也就不能完成。&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 第二次:导入Session字符集与数据库字符集之间的转换。&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 然而,oracle8i的这种转换只能在单字节字符集之间进行,oracle8i导入Session不支持多字节字符集之间的转换，因此为了避免第一次转换，导入Session使用的NLS_LANG与导出文件字符集相同，第二次转换（通过SQL*Net）支持任何两种字符集。以上情况在Oracle9i中略有不同&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; "&gt;四．乱码问题&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; "&gt;oracle在数据存储、迁移过程中经常发生字符乱码问题，归根到底是由于字符集使用不当引起。下面以使用客户端sqlplus向数据库插入数据和导入/导出（EXP/IMP）过程为例，说明乱码产生的原因。&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; "&gt;4.1使用客户端sqlplus向数据库存储数据&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 这个过程存在3个字符集设置&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; （1）客户端应用字符集&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; （2）客户端NLS_LANG参数设置&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; （3）服务器端数据库字符集(Character Set)设置&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 客户端应用sqlplus中能够显示什么样的字符取决于客户端操作系统语言环境(客户端应用字符集)，但在应用中录入这些字符后，这些字符能否在数据库中正常存储，还与另外两个字符集设置紧密相关，其中客户端NLS_LANG参数主要用于字符数据传输过程中的转换判断。常见的乱码大致有两种情形：&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; （1）汉字变成问号&amp;#8220;？&amp;#8221;；&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;当从字符集A 转换成字符集B时，如果转换字符之间不存在对应关系，NLS_LANG使用替代字符&amp;#8220;？&amp;#8221;替代无法映射的字符&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; （2）汉字变成未知字符（虽然有些是汉字，但与原字符含义不同）&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;转换存在对应关系，但字符集A 中的字符编码与字符集B 中的字符编码代表不同含义&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; "&gt;4.2发生乱码原因&amp;nbsp;&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;乱码产生是由于几个字符集之间转换不匹配造成，分以下几种情况：&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; （注：字符集之间如果不存在子集、超集对应关系时的情况不予考虑，因为这种情况下字符集之间转换必产生乱码）&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1）服务器端数据库字符集与客户端应用字符集相同，与客户端NLS_LANG参数设置不同&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 如果客户端NLS_LANG字符集是其它两种字符集的子集，转换过程将出现乱码。&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 解决方法：将三种字符集设置成同一字符集，或NLS_LANG字符集是其它两种字符集的超集&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2）服务器端数据库字符集与客户端NLS_LANG参数设置相同，与客户端应用字符集不同&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 如果客户端应用字符集是其它两种字符集的超集时，转换过程将出现乱码，但对于单字节编码存储中文问题，可参看本文第5章节的分析&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3）客户端应用字符集、客户端NLS_LANG参数设置、服务器端数据库字符集互不相同&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;此种情况较为复杂，但三种字符集之间只要有不能转换的字符，则必产生乱码&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; "&gt;4.3导入/导出过程出现乱码原因&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 这个过程存在4个字符集设置，在3.1章节中已分析&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&amp;nbsp;&amp;nbsp; （1）源数据库字符集&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&amp;nbsp;&amp;nbsp; （2）EXP过程中NLS_LANG参数&amp;nbsp;&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&amp;nbsp;&amp;nbsp; （3）IMP过程中NLS_LANG参数&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&amp;nbsp;&amp;nbsp; （4）目标数据库字符集&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 出现乱码原因&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1）当源数据库字符集不等于EXP过程中NLS_LANG参数，且源数据库字符集是EXP过程中NLS_LANG的子集，才能保证导出文件正确，其他情况则导出文件字符乱码&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2）EXP过程中NLS_LANG字符集不等于IMP过程中NLS_LANG字符集，且EXP过程中NLS_LANG字符集是IMP过程中NLS_LANG字符集的子级, 才能保证第一次转换正常，否则第一次转换中出现乱码。&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3）如果第一次转换正常，IMP过程中NLS_LANG字符集是目标数据库字符集的子集或相同，才能保证第二次转换正常，否则则第二次转换中出现乱码&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; "&gt;五．单字节编码存储中文问题&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; "&gt;由于历史的原因，早期的oracle没有中文字符集（如oracle6、oracle7、oracle7.1）,但有的用户从那时起就使用数据库了，并用US7ASCII字符集存储了中文，或是有的用户在创建数据库时，不考虑清楚，随意选择一个默认的字符集，如WE8ISO8859P1或US7ASCII，而这两个字符集都没有汉字编码，虽然有些时候选用这种字符集好象也能正常使用，但用这种字符集存储汉字信息从原则上说就是错误的，它会给数据库的使用与维护带来一系列的麻烦。&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 正常情况下，要将汉字存入数据库，数据库字符集必须支持中文，而将数据库字符集设置为US7ASCII等单字节字符集是不合适的。US7ASCII字符集只定义了128个符号，并不支持汉字。另外，如果在SQL*PLUS中能够输入中文，操作系统缺省应该是支持中文的，但如果在NLS_LANG中的字符集设置为US7ASCII，显然也是不正确的，它没有反映客户端的实际情况。但在实际应用中汉字显示却是正确的，这主要是因为Oracle检查数据库与客户端的字符集设置是同样的，那么数据在客户与数据库之间的存取过程中将不发生任何转换，但是这实际上导致了数据库标识的字符集与实际存入的内容是不相符的。而在SELECT的过程中，Oracle同样检查发现数据库与客户端的字符集设置是相同的，所以它也将存入的内容原封不动地传送到客户端，而客户端操作系统识别出这是汉字编码所以能够正确显示。&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 在这个例子中，数据库与客户端都没有设置成中文字符集，但却能正常显示中文，从应用的角度看好象没问题。然而这里面却存在着极大的隐患，比如在应用length或substr等字符串函数时，就可能得到意外的结果。&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 对于早期使用US7ASCII字符集数据库的数据迁移到oracle8i/9i中（使用zhs16gbk），由于原始数据已经按照US7ASCII格式存储，对于这种情况，可以通过使用Oracle8i的导出工具，设置导出字符集为US7ASCII，导出后使用UltraEdit等工具打开dmp文件，修改第二、三字符，修改 0001 为0354,这样就可以将US7ASCII字符集的数据正确导入到ZHS16GBK的数据库中。&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; "&gt;六．结束语&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; "&gt;为了避免在数据库迁移过程中由于字符集不同导致的数据损失，oracle提供了字符集扫描工具（character set scanner），通过这个工具我们可以测试在数据迁移过程中由于字符集转换可能带来的问题，然后根据测试结果，确定数据迁移过程中最佳字符集解决方案。&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/rethink/aggbug/2278859.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/rethink/archive/2011/12/07/2278859.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/rethink/archive/2011/06/03/2071157.html</id><title type="text">读书笔记：高性能网站建设进阶指南</title><summary type="text">第7章	编写高效的JavaScript	1	管理作用域 标识符在作用域链中的位置越深，查找和访问它所需要的时间就越长； 局部变量是JavaScript中读写最快的标识符。全局变量对象始终是作用域链中的最后一个对象，所以对全局标识符的解析总是最耗时的。 原则：尽可能的使用局部变量。任何非局部变量在函数中使用超过一次时，都应该将其存储为局部变量。 如：在函数中如果多次调用全局变量document，则应该在函数中定义：var doc = document; 基于V8 JavaScript引擎的Google Chrome和基于Nitro JavaScript引擎的Safari 4+的存取速度超快，标识</summary><published>2011-06-03T03:10:00Z</published><updated>2011-06-03T03:10:00Z</updated><author><name>rethink</name><uri>http://www.cnblogs.com/rethink/</uri></author><link rel="alternate" href="http://www.cnblogs.com/rethink/archive/2011/06/03/2071157.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/rethink/archive/2011/06/03/2071157.html"/><content type="html">&lt;p&gt;&lt;strong&gt;第7章&lt;span  style="white-space:pre"&gt;	&lt;/span&gt;编写高效的JavaScript&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span  style="white-space:pre"&gt;	&lt;/span&gt;1&lt;span  style="white-space:pre"&gt;	&lt;/span&gt;管理作用域&lt;/p&gt;&lt;p&gt;&lt;span  style="white-space:pre"&gt;		&lt;/span&gt;标识符在作用域链中的位置越深，查找和访问它所需要的时间就越长；&lt;/p&gt;&lt;p&gt;&lt;span  style="white-space:pre"&gt;		&lt;/span&gt;&lt;strong&gt;局部变量是JavaScript中读写最快的标识符。&amp;nbsp;全局变量对象始终是作用域链中的最后一个对象，所以对全局标识符的解析总是最耗时的。&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span  style="white-space:pre"&gt;		&lt;/span&gt;原则：尽可能的使用局部变量。任何非局部变量在函数中使用超过一次时，都应该将其存储为局部变量。&lt;/p&gt;&lt;p&gt;&lt;span  style="white-space:pre"&gt;		&lt;/span&gt;如：在函数中如果多次调用全局变量document，则应该在函数中定义：var doc = document;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span  style="white-space:pre"&gt;		&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span  style="white-space:pre"&gt;		&lt;/span&gt;&lt;em&gt;基于V8 JavaScript引擎的Google Chrome和基于Nitro JavaScript引擎的Safari 4+的存取速度超快，标识符深度的影响微乎其微了。&amp;nbsp;&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span  style="white-space:pre"&gt;	&lt;/span&gt;2&lt;span  style="white-space:pre"&gt;	&lt;/span&gt;&amp;nbsp;高效的数据存取&lt;/p&gt;&lt;p&gt;&lt;span  style="white-space:pre"&gt;		&lt;/span&gt;&amp;nbsp;&lt;strong&gt;读取局部变量的速度快于数组元素和对象属性。&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span  style="white-space:pre"&gt;		&lt;/span&gt;&amp;nbsp;如：循环的时候，for (var i=0; i &amp;lt; data.count; i++) 应该改成 var count = data.count; for (var i=0; i &amp;lt; count; i++);&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span  style="white-space:pre"&gt;		&lt;/span&gt;&amp;nbsp;&lt;strong&gt;随着数据结构深度的增加，数据存储速度也跟着变大。&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span  style="white-space:pre"&gt;		&lt;/span&gt;&amp;nbsp;如：存取data.count 比 data.item.count 快。&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span  style="white-space: pre; "&gt;		&lt;/span&gt;&amp;nbsp;在数据存取时，将函数中使用超过一次的对象属性或数组元素存储成局部变量是个好方法。&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span  style="white-space:pre"&gt;		&lt;/span&gt;&amp;nbsp;&lt;strong&gt;对于大多数浏览器来说，存取对象属性使用点符号（data.count）还是方括号（data["count"]）几乎没有差别，但是Safari是例外，在Safari中使用方括号明显比点符号慢。&amp;nbsp;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span  style="white-space:pre"&gt;		&lt;/span&gt;&amp;nbsp;&lt;em&gt;数组元素和对象属性的读取速度因浏览器而异。有的读取数组快，有的反之。&amp;nbsp;&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span  style="white-space:pre"&gt;		&lt;/span&gt;&amp;nbsp;&lt;strong&gt;对DOM的操作特别要注意：&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span  style="white-space:pre"&gt;		&lt;/span&gt;&amp;nbsp;var divs = document.getElementsByTagName("div");&lt;/p&gt;&lt;p&gt;&lt;span  style="white-space:pre"&gt;		&lt;/span&gt;&amp;nbsp;for (var i=0; i&amp;lt; divs.length; i++)&lt;strong&gt; //该方式要避免，因为每次都要查询DOM&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span  style="white-space:pre"&gt;		&lt;/span&gt;&amp;nbsp;应该再增加一个步骤：len = divs.length 。&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span  style="white-space:pre"&gt;		&lt;/span&gt;&amp;nbsp;&lt;strong&gt;操作DOM对象的开销总是比非DOM对象要大，HTMLCollection对象则是DOM中性能最糟糕的。如果要对HTMLCollection对象的成员反复存取，最高效的方法是先将它们复制到一个数组中。&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/rethink/aggbug/2071157.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/rethink/archive/2011/06/03/2071157.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/rethink/archive/2011/04/22/2024638.html</id><title type="text">读书笔记：智能手机web标准开发</title><summary type="text">【移动web网站的标记语言】 A WML即无线标记语言（主要面向旧式的移动设备） 主要版本WML1.1 和 WML 1.3。1.3引入了对彩色图像的支持。相应的脚本是WML script。 过时的语言了，iphone明确表示不再支持WML。 目前的情况（2010年10月），以美国市场为例，5%的手机仅支持WML，剩下的95%支持XHTML-MP,或XHTML或HTML。 B CHTML（日本特有的，docomo发起的） 在日本市场，使用慢慢也在减少了，通过CHTML开发的各种I-mode服务已经被XHTML迅速的取代。 C XHTML-MP即XHTML移动配置文件，（主要...</summary><published>2011-04-22T02:53:00Z</published><updated>2011-04-22T02:53:00Z</updated><author><name>rethink</name><uri>http://www.cnblogs.com/rethink/</uri></author><link rel="alternate" href="http://www.cnblogs.com/rethink/archive/2011/04/22/2024638.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/rethink/archive/2011/04/22/2024638.html"/><content type="html">&lt;div&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-family: 宋体; font-size: 14pt; "&gt;【移动&lt;/span&gt;&lt;/strong&gt;&lt;strong style="font-size: 14pt; "&gt;web&lt;span style="font-family:宋体;"&gt;网站的标记语言】&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p style="margin-left:21.0pt;text-indent:0cm;"&gt;A&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WML&lt;/span&gt;&lt;span style="font-family:宋体;"&gt;即无线标记语言（主要面向旧式的移动设备）&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:21.0pt;text-indent:0cm;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family:宋体;"&gt;主要版本&lt;/span&gt;WML1.1 &lt;span style="font-family:宋体;"&gt;和&lt;/span&gt; WML 1.3&lt;span style="font-family:宋体;"&gt;。&lt;/span&gt;1.3&lt;span style="font-family:宋体;"&gt;引入了对彩色图像的支持。相应的脚本是&lt;/span&gt;WML script&lt;span style="font-family:宋体;"&gt;。&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:21.0pt;text-indent:0cm;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family:宋体;"&gt;过时的语言了，i&lt;/span&gt;phone&lt;span style="font-family:宋体;"&gt;明确表示不再支持&lt;/span&gt;WML&lt;span style="font-family:宋体;"&gt;。&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:21.0pt;text-indent:0cm;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family:宋体;"&gt;目前的情况（&lt;/span&gt;2010&lt;span style="font-family:宋体;"&gt;年&lt;/span&gt;10&lt;span style="font-family:宋体;"&gt;月），以美国市场为例，&lt;/span&gt;5%&lt;span style="font-family:宋体;"&gt;的手机仅支持&lt;/span&gt;WML&lt;span style="font-family:宋体;"&gt;，剩下的&lt;/span&gt;95%&lt;span style="font-family:宋体;"&gt;支持&lt;/span&gt;XHTML-MP,&amp;nbsp;&lt;span style="font-family:宋体;"&gt;或&lt;/span&gt;XHTML&lt;span style="font-family:宋体;"&gt;或&lt;/span&gt;HTML&lt;span style="font-family:宋体;"&gt;。&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:21.0pt;text-indent:0cm;"&gt;B&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CHTML&lt;/span&gt;&lt;span style="font-family:宋体;"&gt;（日本特有的，&lt;/span&gt;docomo&lt;span style="font-family:宋体;"&gt;发起的）&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:21.0pt;text-indent:0cm;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family:宋体;"&gt;在日本市场，使用慢慢也在减少了，通过&lt;/span&gt;CHTML&lt;span style="font-family:宋体;"&gt;开发的各种&lt;/span&gt;I-mode&lt;span style="font-family:宋体;"&gt;服务已经被&lt;/span&gt;XHTML&lt;span style="font-family:宋体;"&gt;迅速的取代。&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:21.0pt;text-indent:0cm;"&gt;C&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; XHTML-MP&lt;/span&gt;&lt;span style="font-family:宋体;"&gt;即&lt;/span&gt;XHTML&lt;span style="font-family:宋体;"&gt;移动配置文件，（主要面向非智能手机和除&lt;/span&gt;iphone&lt;span style="font-family:宋体;"&gt;以外的绝大多数智能手机）&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:21.0pt;text-indent:0cm;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; XHTML-MP&lt;/span&gt;&lt;span style="font-family:宋体;"&gt;目前最广泛的移动&lt;/span&gt;web&lt;span style="font-family:宋体;"&gt;标记语言&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:21.0pt;text-indent:0cm;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; XHTML-MP 1.0&lt;/span&gt;&lt;span style="font-family:宋体;"&gt;设定了移动标记语言的基本标记。&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:21.0pt;text-indent:0cm;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; XHTML-MP 1.1 &lt;/span&gt;&lt;span style="font-family:宋体;"&gt;添加了&lt;/span&gt;&amp;lt;SCRIPT&amp;gt;&lt;span style="font-family:宋体;"&gt;标记并支持移动&lt;/span&gt;JavaScript&lt;span style="font-family:宋体;"&gt;。&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:21.0pt;text-indent:0cm;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; XHTML-MP1.2 &lt;/span&gt;&lt;span style="font-family:宋体;"&gt;添加了更多表单标记和文本输入模式。&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:21.0pt;text-indent:0cm;"&gt;D&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; XHTML &lt;/span&gt;&lt;span style="font-family:宋体;"&gt;（主要面向高级移动设备和智能手机）&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:21.0pt;text-indent:0cm;"&gt;E&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family:宋体;"&gt;传统&lt;/span&gt;HTML &lt;span style="font-family:宋体;"&gt;（主要面向高级移动设备和智能手机）&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:21.0pt;text-indent:0cm;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family:宋体;"&gt;虽然现在的智能手机很多已经支持&lt;/span&gt;html&lt;span style="font-family:宋体;"&gt;，但是不推荐使用，因为&lt;/span&gt;html&lt;span style="font-family:宋体;"&gt;的语法非常的松散（据&lt;/span&gt;Opera&lt;span style="font-family:宋体;"&gt;统计，事实上只有&lt;/span&gt;4.13%&lt;span style="font-family:宋体;"&gt;的网页符合&lt;/span&gt;WEB&lt;span style="font-family:宋体;"&gt;标记和脚本编写标准）。为了对应这些松散的语法，桌面浏览器做了大量的工作。但是移动浏览器出于性能考虑，对这方面的优化很少。所以对于要面向智能手机提供丰富体验的站点，建议使用&lt;/span&gt;XHTML&lt;span style="font-family:宋体;"&gt;。&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:21.0pt;text-indent:0cm;"&gt;Android&lt;span style="font-family:宋体;"&gt;，&lt;/span&gt;iPhone&lt;span style="font-family:宋体;"&gt;等新的智能手机都支持&lt;/span&gt;XHTML&lt;span style="font-family:宋体;"&gt;，&lt;/span&gt;HTML&lt;span style="font-family:宋体;"&gt;，&lt;/span&gt;JavaScript&lt;span style="font-family:宋体;"&gt;和&lt;/span&gt;AJAX&lt;span style="font-family:宋体;"&gt;。部分&lt;/span&gt;HTML5&lt;span style="font-family:宋体;"&gt;和&lt;/span&gt;CSS3&lt;span style="font-family:宋体;"&gt;。&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:21.0pt;text-indent:0cm;"&gt;F&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HTML5&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:21.0pt;text-indent:0cm;"&gt;&lt;span style="font-family:宋体;"&gt;在高端手机上，&lt;/span&gt;HTML5&lt;span style="font-family:宋体;"&gt;有取代&lt;/span&gt;XHTML&lt;span style="font-family:宋体;"&gt;的趋势。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:宋体;"&gt;技术点：&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;A&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MIME&lt;/span&gt;&lt;span style="font-family:宋体;"&gt;类型&lt;/span&gt;&lt;/p&gt;  &lt;p style="text-indent:21.0pt"&gt;&lt;span style="font-family:宋体;"&gt;不同的语言，&lt;/span&gt;MIME&lt;span style="font-family:宋体;"&gt;类型不一样。&lt;/span&gt;MIME&lt;span style="font-family:宋体;"&gt;类型是页面能否被正确解析的前提。&lt;/span&gt;&lt;/p&gt;  &lt;p style="text-indent:21.0pt"&gt;&lt;span style="font-family:宋体;"&gt;由于传统的服务器（如&lt;/span&gt;apache&lt;span style="font-family:宋体;"&gt;）是面向桌面&lt;/span&gt;web&lt;span style="font-family:宋体;"&gt;的，所以需要向&lt;/span&gt;Web&lt;span style="font-family:宋体;"&gt;服务器配置中添加新的&lt;/span&gt;MIME&lt;span style="font-family:宋体;"&gt;类型（&lt;/span&gt;apache&lt;span style="font-family:宋体;"&gt;中使用&lt;/span&gt;AddType&lt;span style="font-family:宋体;"&gt;指令向&lt;/span&gt;mime.types&lt;span style="font-family:宋体;"&gt;等配置文件中添加新的&lt;/span&gt;MIME&lt;span style="font-family:宋体;"&gt;类型）。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family:宋体;"&gt;如果页面是动态生成的，也可以用动态语言发送&lt;/span&gt;header&lt;span style="font-family:宋体;"&gt;信息。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;B&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family:宋体;"&gt;头信息要正确。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:宋体;"&gt;以&lt;/span&gt;XHTML-MP 1.0&lt;span style="font-family:宋体;"&gt;为例：&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt; &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&amp;lt;!&amp;#8212;&lt;span style="font-family:宋体;"&gt;上面是&lt;/span&gt;XML&lt;span style="font-family:宋体;"&gt;声明。&lt;/span&gt;XHTML-MP&lt;span style="font-family:宋体;"&gt;是&lt;/span&gt;XML --&amp;gt;&lt;/p&gt;  &lt;p&gt;&amp;lt;!&amp;#8212;DOCTYPE&lt;span style="font-family: 宋体;"&gt;声明该文档是&lt;/span&gt;&lt;span&gt;XHTML-MP 1.0 --&amp;gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span&gt;&amp;lt;!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN" "http://www.wapforum.org/DTD/xhtml-mobile10.dtd"&amp;gt; &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span&gt;&amp;lt;html xmlns="http://www.w3.org/1999/xhtml"&amp;gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;span style="font-family: 宋体; font-size: 14pt; "&gt;【移动&lt;/span&gt;&lt;/strong&gt;&lt;strong style="font-size: 14pt; "&gt;JavaScript&lt;span style="font-family:宋体;"&gt;】&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:宋体;"&gt;与桌面&lt;/span&gt;JavaScript&lt;span style="font-family:宋体;"&gt;的差异：&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;1&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family:宋体;"&gt;全局方法&lt;/span&gt;eval&lt;span style="font-family:宋体;"&gt;是可选的&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;2&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; with&lt;/span&gt;&lt;span style="font-family:宋体;"&gt;关键字是可选的。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;3&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family:宋体;"&gt;动态函数构造是可选的。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family:宋体;"&gt;比如下列方法可能在某些支持&lt;/span&gt;JavaScript&lt;span style="font-family:宋体;"&gt;的手机上并不支持：&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Window.onload = new function() {alert(&amp;#8216;Hello World&amp;#8217;);};&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="margin-left:18.0pt;text-indent:-18.0pt;"&gt;&lt;span&gt;&lt;span&gt;4&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:宋体;"&gt;必须使用分号终止编程语句：脚本行必须以分号结束。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;5&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DOM&lt;/span&gt;&lt;span style="font-family:宋体;"&gt;和事件支持会因移动浏览器不同而有差异。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:宋体;"&gt;&lt;span  style="font-family: verdana, 'courier new'; "&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;比如：在最新支持重力感应手机终端上，屏幕翻转时触发的函数也可能不一致，有的使用&lt;/span&gt;onresize&lt;span style="font-family:宋体;"&gt;函数，有的使用&lt;/span&gt;onorientation&lt;span style="font-family:宋体;"&gt;函数。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;6&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family:宋体;"&gt;减少了支持的字符集。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;7&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family:宋体;"&gt;必须声明相应的&lt;/span&gt;DTD&lt;span style="font-family:宋体;"&gt;，如&lt;/span&gt;xhtml1.1&lt;span style="font-family:宋体;"&gt;或&lt;/span&gt;1.2&lt;span style="font-family:宋体;"&gt;。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;8&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family:宋体;"&gt;某些机型的专有方法：比如有些机型对&lt;/span&gt;GPS&lt;span style="font-family:宋体;"&gt;的支持，和对多点触摸的支持。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:宋体;"&gt;开发原则：&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;A&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family:宋体;"&gt;在不支持&lt;/span&gt;JavaScript&lt;span style="font-family:宋体;"&gt;的终端，也要提供可用的&lt;/span&gt;web&lt;span style="font-family:宋体;"&gt;体验。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;B&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family:宋体;"&gt;真机测试。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;C&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AJAX&lt;/span&gt;&lt;span style="font-family:宋体;"&gt;使用计时器的时候要谨慎，定时执行的话可能会带来电池耗电过大，还有上网流量问题。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;span style="font-family: 宋体; font-size: 14pt; "&gt;【移动&lt;/span&gt;&lt;/strong&gt;&lt;strong style="font-size: 14pt; "&gt;CSS&lt;span style="font-family:宋体;"&gt;】&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p style="margin-left:21.0pt;text-indent:-21.0pt;"&gt;&lt;span&gt;&lt;span&gt;1&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:宋体;"&gt;删除了密集型&lt;/span&gt;CSS&lt;span style="font-family:宋体;"&gt;功能，如属性继承和&lt;/span&gt;3D&lt;span style="font-family:宋体;"&gt;元素对齐方式。&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:21.0pt;text-indent:-21.0pt;"&gt;&lt;span&gt;&lt;span&gt;2&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:宋体;"&gt;有两种标准：无线&lt;/span&gt;CSS&lt;span style="font-family:宋体;"&gt;和&lt;/span&gt;CSS&lt;span style="font-family:宋体;"&gt;移动配置文件。两者差别较大。&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:21.0pt;text-indent:0cm;"&gt;&lt;span style="font-family:宋体;"&gt;确实手机支持哪种&lt;/span&gt;css&lt;span style="font-family:宋体;"&gt;：&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:21.0pt;text-indent:0cm;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; A&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family:宋体;"&gt;查看手机浏览器制造商文档。（有些浏览器不提供）&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:21.0pt;text-indent:0cm;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; B&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family:宋体;"&gt;查询设备数据库。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:宋体;"&gt;技术点：&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:21.0pt;text-indent:-21.0pt;"&gt;&lt;span&gt;&lt;span&gt;1&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:宋体;"&gt;所有数字属性都必须包含单位。&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:21.0pt;text-indent:-21.0pt;"&gt;&lt;span&gt;&lt;span&gt;2&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:宋体;"&gt;对&lt;/span&gt;font-family&lt;span style="font-family:宋体;"&gt;使用常规值，而对&lt;/span&gt;font-size&lt;span style="font-family:宋体;"&gt;使用相对值。实际上，开发人员无法控制移动设备上的安装的字体。所以较为简单的常规&lt;/span&gt;font-family&lt;span style="font-family:宋体;"&gt;值以及相对的&lt;/span&gt;font-size&lt;span style="font-family:宋体;"&gt;值，来实现灵活的页面样式。&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:21.0pt;text-indent:-21.0pt;"&gt;&lt;span&gt;&lt;span&gt;3&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:宋体;"&gt;唯一可靠的&lt;/span&gt;border-style&lt;span style="font-family:宋体;"&gt;值是&lt;/span&gt;solid&lt;span style="font-family:宋体;"&gt;。高级浏览器可能会支持其他边框样式，但只有&lt;/span&gt;solid&lt;span style="font-family:宋体;"&gt;样式的边框线可以在小尺寸屏幕上很好的呈现。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family: 宋体; font-size: 14pt; "&gt;&lt;strong&gt;【页面调试环境】&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:宋体;"&gt;以下三种的可靠性依次递增：&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:21.0pt;text-indent:-21.0pt;"&gt;&lt;span&gt;&lt;span&gt;1&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:宋体;"&gt;浏览器模拟。如&lt;/span&gt;Firefox&lt;span style="font-family:宋体;"&gt;插件&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:21.0pt;text-indent:-21.0pt;"&gt;&lt;span&gt;&lt;span&gt;2&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:宋体;"&gt;移动浏览器模拟器&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:21.0pt;text-indent:-21.0pt;"&gt;&lt;span&gt;&lt;span&gt;3&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:宋体;"&gt;真机。（必须的）&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:宋体;"&gt;文档验证器：&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:宋体;"&gt;在移动&lt;/span&gt;Web&lt;span style="font-family:宋体;"&gt;中，样式表和标记语法的有效性是必不可少的，页面必须符合标准语法，以确保在广泛的移动&lt;/span&gt;Web&lt;span style="font-family:宋体;"&gt;浏览器中的兼容性。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;W3C&lt;span style="font-family:宋体;"&gt;标记验证服务：&lt;/span&gt;&lt;a href="http://validator.w3.org/"&gt;http://validator.w3.org&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;W3C&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  CSS&lt;/span&gt;&lt;span style="font-family:宋体;"&gt;验证服务：&lt;/span&gt;&lt;a href="http://jigsaw.w3.org/css-validator/"&gt;http://jigsaw.w3.org/css-validator/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;W3C MobileOk&lt;span style="font-family: 宋体;"&gt;检查器：&lt;/span&gt;&lt;a href="http://validator.w3.org/mobile/"&gt;http://validator.w3.org/mobile/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;mobiReady: &lt;a href="http://ready.mobi/"&gt;http://ready.mobi/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Validome: &lt;a href="http://www.validome.org/"&gt;http://www.validome.org/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:宋体;"&gt;测试时需要意识到如下问题：&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:宋体;"&gt;通过&lt;/span&gt;wi-fi&lt;span style="font-family:宋体;"&gt;和通过运营商无限网络（&lt;/span&gt;GPRS&lt;span style="font-family:宋体;"&gt;、&lt;/span&gt;GSM&lt;span style="font-family:宋体;"&gt;、&lt;/span&gt;UMTS&lt;span style="font-family:宋体;"&gt;、&lt;/span&gt;LTE&lt;span style="font-family:宋体;"&gt;、&lt;/span&gt;CDMA&lt;span style="font-family:宋体;"&gt;）访问&lt;/span&gt;web&lt;span style="font-family:宋体;"&gt;站点是有差别的，前者没有通过移动运营商专用网络。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:宋体;"&gt;移动运营商专用网络可能会过滤、缓存甚至修改&lt;/span&gt;web&lt;span style="font-family:宋体;"&gt;页面的内容，同时还会提供一些有价值的服务，如唯一的用户标志和统一计费等等。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family: 宋体; font-size: 14pt; "&gt;&lt;strong&gt;【设备识别和内容自适应】&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:宋体;"&gt;移动&lt;/span&gt;Web&lt;span style="font-family:宋体;"&gt;开发核心原理：设备识别和内容自适应。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;1&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family:宋体;"&gt;设备识别：&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family:宋体;"&gt;主要依靠&lt;/span&gt;User-Agent&lt;span style="font-family:宋体;"&gt;来识别移动移动浏览器，制造商和型号。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family:宋体;"&gt;但只有&lt;/span&gt;User-Agent&lt;span style="font-family:宋体;"&gt;的信息是不足够的，必须使用设备数据库获取设备信息。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family:宋体;"&gt;设备信息数据库：&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; A&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WURFL&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;（开放的数据库，并提供&lt;/span&gt;API&lt;span style="font-family:宋体;"&gt;）&lt;/span&gt;-----&lt;span style="font-family:宋体;"&gt;欧美&lt;/span&gt;&lt;/p&gt;&lt;p&gt;B&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DeviceAtlas&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;（商业设备数据库和&lt;/span&gt;API&lt;span style="font-family:宋体;"&gt;）&lt;/span&gt;------&lt;span style="font-family:宋体;"&gt;欧美&lt;/span&gt;&lt;/p&gt;&lt;p&gt;C&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MOBYRENT-----&lt;/span&gt;&lt;span style="font-family:宋体;"&gt;日本&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;2&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family:宋体;"&gt;内容自适应：&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:21.0pt;text-indent:0cm;"&gt;&lt;span style="font-family:宋体;"&gt;结合&lt;/span&gt;1&lt;span style="font-family:宋体;"&gt;的设备识别，针对不同移动终端输出不同的页面内容。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family:宋体;"&gt;开发一个内容自适应移动&lt;/span&gt;web&lt;span style="font-family:宋体;"&gt;网站的流程：&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/p&gt;&lt;p&gt;A&lt;span  style="white-space:pre"&gt;	&lt;/span&gt;&amp;nbsp;&amp;nbsp;&lt;span style="font-family:宋体;"&gt;确定该移动&lt;/span&gt;web&lt;span style="font-family:宋体;"&gt;站点所面向的移动设备。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; B&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family:宋体;"&gt;以设备数据库中的可用特征为指导，基于共享的功能将目标设备分成不同的组。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; C&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family:宋体;"&gt;确定移动&lt;/span&gt;web&lt;span style="font-family:宋体;"&gt;站点中可以共享的功能。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; D&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family:宋体;"&gt;针对不同设备组，设计不同的对应方案：设定如何针对每个组精确的更改&lt;/span&gt;web&lt;span style="font-family:宋体;"&gt;站点内容和页面呈现。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family:宋体;"&gt;以显示图片为例，在不同大小的手机屏幕上，显示的是不同大小的图片。因此每个图片有多个版本，对于用户上传的图片，也需要生成不同版本的缩略图。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:宋体;"&gt;比较典型的设备组参考：（一个设备可以属于多个组）&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:宋体;"&gt;第一组：支持&lt;/span&gt;JavaScript&lt;span style="font-family:宋体;"&gt;和&lt;/span&gt;AJAX&lt;span style="font-family:宋体;"&gt;的浏览器。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:宋体;"&gt;第二组：屏幕宽带为&lt;/span&gt;320&lt;span style="font-family:宋体;"&gt;像素或更大的浏览器。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:宋体;"&gt;第三组：屏幕宽度介于&lt;/span&gt;240&lt;span style="font-family:宋体;"&gt;像素与&lt;/span&gt;319&lt;span style="font-family:宋体;"&gt;像素之间的设备。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:宋体;"&gt;第四组：屏幕小于&lt;/span&gt;240&lt;span style="font-family:宋体;"&gt;像素的设备&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:宋体;"&gt;第五组：仅支持&lt;/span&gt;WML&lt;span style="font-family:宋体;"&gt;浏览器的设备&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:宋体;"&gt;此外，根据项目的面向终端范围和项目需求，设备组可以再细化或者精简，比如：使用&lt;/span&gt;WebKit&lt;span style="font-family:宋体;"&gt;引擎的浏览器（&lt;/span&gt;iphone&lt;span style="font-family:宋体;"&gt;和&lt;/span&gt;Android&lt;span style="font-family:宋体;"&gt;上的浏览器）等，&lt;/span&gt;WebKit&lt;span style="font-family:宋体;"&gt;浏览器支持专用的很有用&lt;/span&gt;CSS&lt;span style="font-family:宋体;"&gt;扩展。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:宋体;"&gt;理想的情况：&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:宋体;"&gt;采用渐进增强的开发方式，先定义内容，然后通过&lt;/span&gt;CSS&lt;span style="font-family:宋体;"&gt;增强内容样式，最后通过&lt;/span&gt;JavaScript&lt;span style="font-family:宋体;"&gt;增强用户体验。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:宋体;"&gt;即：内容和样式彻底分离（如使用&lt;/span&gt;DIV+CSS&lt;span style="font-family:宋体;"&gt;设计页面），在不同的手机终端，使用不同的&lt;/span&gt;CSS&lt;span style="font-family:宋体;"&gt;（及不同的图片）。在支持重力感应的手机终端中，横向和纵向使用不同的&lt;/span&gt;CSS&lt;span style="font-family:宋体;"&gt;。在不支持&lt;/span&gt;JavaScript&lt;span style="font-family:宋体;"&gt;的情况下，页面可以正常使用，在支持&lt;/span&gt;JavaScript&lt;span style="font-family:宋体;"&gt;的情况下，客户体验更丰富。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:宋体;"&gt;一般经验：&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:21.0pt;text-indent:-21.0pt;"&gt;&lt;span&gt;&lt;span&gt;1&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:宋体;"&gt;首先开发基本的版本。&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:21.0pt;text-indent:-21.0pt;"&gt;&lt;span&gt;&lt;span&gt;2&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:宋体;"&gt;仅创建两个移动版本，其中一个用于基本的手机，另一个用于智能手机。然后根据客户所使用的手机优化功能更丰富的版本。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;span style="font-family: 宋体; font-size: 14pt; "&gt;【页面&lt;/span&gt;&lt;/strong&gt;&lt;strong style="font-size: 14pt; "&gt;/&lt;span style="font-family:宋体;"&gt;功能设计】&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p style="margin-left:21.0pt;text-indent:-21.0pt;"&gt;&lt;span&gt;&lt;span&gt;1&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:宋体;"&gt;仅提供用户所需的功能，简化所有内容&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:21.0pt;text-indent:-21.0pt;"&gt;&lt;span&gt;&lt;span&gt;2&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:宋体;"&gt;最大限度减少交互。&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:21.0pt;text-indent:-21.0pt;"&gt;&lt;span&gt;&lt;span&gt;3&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:宋体;"&gt;将移动&lt;/span&gt;web&lt;span style="font-family:宋体;"&gt;站点限制为三级导航。移动用户访问站点的时间很短暂，要在尽可能短的时间内找到想要查看的内容。也要容易返回到上一级。&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:21.0pt;text-indent:-21.0pt;"&gt;&lt;span&gt;&lt;span&gt;4&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:宋体;"&gt;保存用户设置，减少用户交互。使用&lt;/span&gt;cookie&lt;span style="font-family:宋体;"&gt;保存用户设置。（比如图片大小选项，是否&lt;/span&gt;3G&lt;span style="font-family:宋体;"&gt;版本等）；&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:21.0pt;text-indent:-21.0pt;"&gt;&lt;span&gt;&lt;span&gt;5&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:宋体;"&gt;纵向模式和横向模式要都能正常显示。正确可以使用样式（&lt;/span&gt;100%&lt;span style="font-family:宋体;"&gt;宽度等）来解决此问题。&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:21.0pt;text-indent:-21.0pt;"&gt;&lt;span&gt;&lt;span&gt;6&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:宋体;"&gt;优化所有内容。（图片：使用&lt;/span&gt;PNG&lt;span style="font-family:宋体;"&gt;可以实现质量和大小的折中。&lt;/span&gt;JS,CSS&lt;span style="font-family:宋体;"&gt;文件优化）&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:21.0pt;text-indent:-21.0pt;"&gt;&lt;span&gt;&lt;span&gt;7&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:宋体;"&gt;尽量避免使用以下功能：弹出窗口、鼠标悬停菜单、自动重定向、外部链接、水平滚动以及框架。&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:21.0pt;text-indent:-21.0pt;"&gt;&lt;span&gt;&lt;span&gt;8&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;AJAX&lt;span style="font-family:宋体;"&gt;：可降解。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family: 宋体; font-size: 14pt; "&gt;&lt;strong&gt;【智能手机浏览器】&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:21.0pt;text-indent:-21.0pt;"&gt;&lt;strong&gt;&lt;span&gt;&lt;span&gt;1&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family:宋体;"&gt;智能手机浏览器通用的&lt;/span&gt;web&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family:宋体;"&gt;技术&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p style="margin-left:21.0pt;text-indent:0cm;"&gt;A&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Viewport Meta&lt;/span&gt;&lt;span style="font-family:宋体;"&gt;标记。&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:21.0pt;text-indent:0cm;"&gt;&amp;lt;meta name=&amp;#8221;viewpost&amp;#8221; content=&amp;#8221;width=240,height=320,user-scalable=yes,&lt;/p&gt;  &lt;p style="margin-left:21.0pt;text-indent:0cm;"&gt;&lt;span&gt;initial-scale=2.5,maximum-scale=5.0,minimum-scale=1.0&amp;#8221; /&amp;gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:21.0pt;text-indent:0cm;"&gt;width&lt;span style="font-family:宋体;"&gt;和&lt;/span&gt;height&lt;span style="font-family:宋体;"&gt;指令分别指定视区的逻辑宽度和逻辑高度。&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:21.0pt;text-indent:0cm;"&gt;user-scalable&lt;span style="font-family:宋体;"&gt;指令指定用户是否可以缩放视区，即缩放&lt;/span&gt;Web&lt;span style="font-family:宋体;"&gt;页面的视图。&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:21.0pt;text-indent:0cm;"&gt;Initial-scale&lt;span style="font-family:宋体;"&gt;指令用于设置用于&lt;/span&gt;Web&lt;span style="font-family:宋体;"&gt;页面的初始缩放比例，值为&lt;/span&gt;1.0&lt;span style="font-family:宋体;"&gt;时将显示未经缩放的&lt;/span&gt;web&lt;span style="font-family:宋体;"&gt;文档。&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:21.0pt;text-indent:0cm;"&gt;Maximum-scale&lt;span style="font-family:宋体;"&gt;和&lt;/span&gt;minimum-scale&lt;span style="font-family:宋体;"&gt;指令设置用户对&lt;/span&gt;web&lt;span style="font-family:宋体;"&gt;页面缩放比例的限制，值的范围是&lt;/span&gt;0.25&lt;span style="font-family:宋体;"&gt;到&lt;/span&gt;10.0.&lt;/p&gt;  &lt;p style="margin-left:21.0pt;text-indent:0cm;"&gt;&lt;/p&gt;  &lt;p style="margin-left:21.0pt;text-indent:0cm;"&gt;B&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family:宋体;"&gt;在&lt;/span&gt;JavaScript&lt;span style="font-family:宋体;"&gt;中检测方向变更（横向或纵向）&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:21.0pt;text-indent:0cm;"&gt;&lt;span style="font-family:宋体;"&gt;使用浏览器的&lt;/span&gt;window&lt;span style="font-family:宋体;"&gt;对象的&lt;/span&gt;onresize&lt;span style="font-family:宋体;"&gt;或&lt;/span&gt;onorientationchange&lt;span style="font-family:宋体;"&gt;事件进行处理。&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:21.0pt;text-indent:0cm;"&gt;Iphone&lt;span style="font-family:宋体;"&gt;两种都支持，但通常用&lt;/span&gt;onorientationchange&lt;span style="font-family:宋体;"&gt;；&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:21.0pt;text-indent:0cm;"&gt;Android&lt;span style="font-family:宋体;"&gt;和其他源自&lt;/span&gt;webkit&lt;span style="font-family:宋体;"&gt;的浏览器仅支持&lt;/span&gt;onresize&lt;span style="font-family:宋体;"&gt;；&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:21.0pt;text-indent:0cm;"&gt;BlackBerry&lt;span style="font-family:宋体;"&gt;设备针对&lt;/span&gt;docoment&lt;span style="font-family:宋体;"&gt;对象支持&lt;/span&gt;onresize&lt;span style="font-family:宋体;"&gt;。（但&lt;/span&gt;blackberry&lt;span style="font-family:宋体;"&gt;只有少数机子支持方向变更）。&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:21.0pt;text-indent:0cm;"&gt;&lt;/p&gt;  &lt;p style="margin-left:21.0pt;text-indent:0cm;"&gt;&lt;span style="font-family:宋体;"&gt;参考：&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:21.0pt;text-indent:0cm;"&gt;Iphone&lt;span style="font-family:宋体;"&gt;的&lt;/span&gt;window.orientation&lt;span style="font-family:宋体;"&gt;属性的值：&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:21.0pt;text-indent:0cm;"&gt;-90&lt;span style="font-family:宋体;"&gt;：横向，屏幕以顺时针方向旋转。&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:21.0pt;text-indent:0cm;"&gt;0&lt;span style="font-family:宋体;"&gt;：纵向。默认的属性值&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:21.0pt;text-indent:0cm;"&gt;90&lt;span style="font-family:宋体;"&gt;：横向，逆时针方向旋转&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:21.0pt;text-indent:0cm;"&gt;180&lt;span style="font-family:宋体;"&gt;：纵向；上下翻转。目前暂时不支持。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="margin-left:21.0pt;text-indent:-21.0pt;"&gt;&lt;strong&gt;&lt;span&gt;&lt;span&gt;2&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family:宋体;"&gt;移动浏览器中的&lt;/span&gt;WebKit&lt;/strong&gt;&lt;/p&gt;  &lt;p style="margin-left:21.0pt;text-indent:0cm;"&gt;&lt;span style="font-family:宋体;"&gt;有一些专用的&lt;/span&gt;CSS&lt;span style="font-family:宋体;"&gt;扩展，基于&lt;/span&gt;webit&lt;span style="font-family:宋体;"&gt;的浏览器一般都可以使用这些扩展。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family:宋体;"&gt;基于&lt;/span&gt;webkit&lt;span style="font-family:宋体;"&gt;的浏览器：&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:21.0pt;text-indent:0cm;"&gt;A&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family:宋体;"&gt;用于&lt;/span&gt;iphone&lt;span style="font-family:宋体;"&gt;的&lt;/span&gt;&lt;span&gt;safari mobile&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:21.0pt;"&gt;&lt;a href="http://developer.apple.com/technologies/safari/"&gt;http://developer.apple.com/technologies/safari/&lt;/a&gt;&lt;/p&gt;  &lt;p style="margin-left:21.0pt;text-indent:0cm;"&gt;B&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family:宋体;"&gt;用于&lt;/span&gt;Android&lt;span style="font-family:宋体;"&gt;移动设备的浏览器（也是基于&lt;/span&gt;webkit&lt;span style="font-family:宋体;"&gt;）&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:21.0pt"&gt;C&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family:宋体;"&gt;用于&lt;/span&gt;Palm Pre&lt;span style="font-family:宋体;"&gt;的&lt;/span&gt;webOS&lt;span style="font-family:宋体;"&gt;浏览器；&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:21.0pt"&gt;D&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; nokai S60&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;第&lt;/span&gt;3&lt;span style="font-family:宋体;"&gt;版和第&lt;/span&gt;5&lt;span style="font-family:宋体;"&gt;版及以后。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="margin-left:21.0pt;text-indent:-21.0pt;"&gt;&lt;strong&gt;&lt;span&gt;&lt;span&gt;3&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family:宋体;"&gt;其他浏览器：&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p style="margin-left:21.0pt;text-indent:0cm;"&gt;&lt;span style="font-family:宋体;"&gt;以下浏览器实现的内核不一样，能实现的功能有所差异。&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:21.0pt;text-indent:0cm;"&gt;BlackBerry&lt;span style="font-family:宋体;"&gt;浏览器；&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:21.0pt;text-indent:0cm;"&gt;windows Mobile&lt;span style="font-family:宋体;"&gt;中的&lt;/span&gt;IE mobile&lt;span style="font-family:宋体;"&gt;浏览器；&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:21.0pt;text-indent:0cm;"&gt;Opera Mini&lt;span style="font-family:宋体;"&gt;（实际上是一个代码转换解决方案）；&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:21.0pt;text-indent:0cm;"&gt;Opera Mobile&lt;span style="font-family:宋体;"&gt;浏览器；&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:21.0pt;text-indent:0cm;"&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family: 宋体; font-size: 14pt; "&gt;&lt;strong&gt;【页面优化】&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:21.0pt;text-indent:-21.0pt;"&gt;&lt;span&gt;&lt;span&gt;1&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:宋体;"&gt;最小化外部资源&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:21.0pt;text-indent:-21.0pt;"&gt;&lt;span&gt;&lt;span&gt;2&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:宋体;"&gt;删除空白、注释和不必要的标记（工具：&lt;/span&gt;YUI Compressor&lt;span style="font-family:宋体;"&gt;、&lt;/span&gt;JSMin&lt;span style="font-family:宋体;"&gt;等&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:21.0pt;text-indent:-21.0pt;"&gt;&lt;span&gt;&lt;span&gt;3&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:宋体;"&gt;对图像进行调整和转换&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:21.0pt;text-indent:-21.0pt;"&gt;&lt;span&gt;&lt;span&gt;4&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:宋体;"&gt;对于非智能手机，有些可以采用&lt;/span&gt;MIME&lt;span style="font-family:宋体;"&gt;多字节编码传输页面，类似于电子邮件封装。整个文档的所有资源分装到一个但服务器响应中。&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:21.0pt;text-indent:-21.0pt;"&gt;&lt;span&gt;&lt;span&gt;5&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Web&lt;span style="font-family:宋体;"&gt;服务器优化：&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:21.0pt;text-indent:0cm;"&gt;A&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; gzip&lt;/span&gt;&lt;span style="font-family:宋体;"&gt;或&lt;/span&gt;deflate&lt;span style="font-family:宋体;"&gt;压缩（压缩文本内容&lt;/span&gt;html&lt;span style="font-family:宋体;"&gt;、&lt;/span&gt;css&lt;span style="font-family:宋体;"&gt;、&lt;/span&gt;js&lt;span style="font-family:宋体;"&gt;、&lt;/span&gt;xml&lt;span style="font-family:宋体;"&gt;、&lt;/span&gt;json&lt;span style="font-family:宋体;"&gt;等；图像、音频、视频等多媒体不需要压缩，因为这些文件格式中本身就存在压缩机制了）&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:21.0pt;text-indent:0cm;"&gt;B&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HTTP&lt;/span&gt;&lt;span style="font-family:宋体;"&gt;响应头中的缓存指令&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;span style="font-family: 宋体; font-size: 14pt; "&gt;【部署移动&lt;/span&gt;&lt;/strong&gt;&lt;strong style="font-size: 14pt; "&gt;web&lt;span style="font-family:宋体;"&gt;站点】&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:宋体;"&gt;如果使用相同的域的话，如&lt;/span&gt;&lt;span style="font-family:宋体;"&gt;何将访问自动路由到移动&lt;/span&gt;web&lt;span style="font-family:宋体;"&gt;站点或桌面站点：&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:21.0pt;text-indent:-21.0pt;"&gt;&lt;span&gt;&lt;span&gt;1&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:宋体;"&gt;程序判断（直接判断&lt;/span&gt;user-agent&lt;span style="font-family:宋体;"&gt;，完善的方案是结合设备数据库）&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:21.0pt;text-indent:-21.0pt;"&gt;&lt;span&gt;&lt;span&gt;2&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:宋体;"&gt;使用移动切换产品&lt;/span&gt;The Swither&lt;span style="font-family:宋体;"&gt;（&lt;/span&gt;http://www.passani.it/switcher/&lt;span style="font-family:宋体;"&gt;）或&lt;/span&gt;&lt;span&gt;Apache Mobile Filter&lt;/span&gt;&lt;span style="font-family:宋体;"&gt;扩展&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:21.0pt;text-indent:-21.0pt;"&gt;&lt;span&gt;&lt;span&gt;3&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:宋体;"&gt;自己配置服务器路由规则。&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:21.0pt;text-indent:0cm;"&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;span style="font-family: 宋体; font-size: 14pt; "&gt;【移动&lt;/span&gt;&lt;/strong&gt;&lt;strong style="font-size: 14pt; "&gt;web&lt;span style="font-family:宋体;"&gt;站点&lt;/span&gt;SEO&lt;span style="font-family:宋体;"&gt;】&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p style="margin-left:21.0pt;text-indent:-21.0pt;"&gt;&lt;span&gt;&lt;span&gt;1&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:宋体;"&gt;必须允许爬网程序（蜘蛛）访问移动&lt;/span&gt;web&lt;span style="font-family:宋体;"&gt;站点。&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:21.0pt;text-indent:0cm;"&gt;A&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family:宋体;"&gt;设备数据库一般都有识别主要搜索引擎的方法。&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:21.0pt;text-indent:0cm;"&gt;B&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family:宋体;"&gt;如果是自己定义的路由规则，或通过程序进行路由，则务必要考虑到爬网程序的访问。很多自定义的路由规则和程序路由往往将爬网程序排除在外。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="margin-left:21.0pt;text-indent:-21.0pt;"&gt;&lt;span&gt;&lt;span&gt;2&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:宋体;"&gt;在&lt;/span&gt;robots.txt&lt;span style="font-family:宋体;"&gt;中定义站点地图&lt;/span&gt;XML&lt;span style="font-family:宋体;"&gt;文件，且包含&lt;/span&gt;&amp;lt;mobile:mobile/&amp;gt;&lt;span style="font-family:宋体;"&gt;标签。&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:21.0pt;text-indent:-21.0pt;"&gt;&lt;span&gt;&lt;span&gt;3&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:宋体;"&gt;桌面&lt;/span&gt;web seo&lt;span style="font-family:宋体;"&gt;方法。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;span style="font-family: 宋体; font-size: 14pt; "&gt;【移动&lt;/span&gt;&lt;/strong&gt;&lt;strong style="font-size: 14pt; "&gt;web&lt;span style="font-family:宋体;"&gt;中的代码转换器】&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:宋体;"&gt;&lt;span  style="font-family: verdana, 'courier new'; "&gt;代码转换器&lt;/span&gt;来源：&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:42.0pt;text-indent:-21.0pt;"&gt;&lt;span&gt;&lt;span&gt;1&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:宋体;"&gt;移动运营商&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:42.0pt;text-indent:-21.0pt;"&gt;&lt;span&gt;&lt;span&gt;2&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:宋体;"&gt;搜索引擎&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:42.0pt;text-indent:-21.0pt;"&gt;&lt;span&gt;&lt;span&gt;3&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:宋体;"&gt;部分移动浏览器提供的服务（如UC浏览器）。&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:宋体;"&gt;解决方法：防御性编程。&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:42.0pt;text-indent:-21.0pt;"&gt;&lt;span&gt;&lt;span&gt;1&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:宋体;"&gt;将标记声明为移动友好。使用标准的文档声明&lt;/span&gt;(&lt;span style="font-family:宋体;"&gt;文档头信息，&lt;/span&gt;MIME&lt;span style="font-family:宋体;"&gt;类型等&lt;/span&gt;)&lt;/p&gt;  &lt;p style="margin-left:42.0pt;text-indent:-21.0pt;"&gt;&lt;span&gt;&lt;span&gt;2&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:宋体;"&gt;使用自引用链接关系，声明已经对移动设备进行了优化&lt;/span&gt;,&lt;span style="font-family:宋体;"&gt;如在&lt;/span&gt;test.mobi/1.php&lt;span style="font-family:宋体;"&gt;中增加&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:42.0pt;text-indent:0cm;"&gt;&amp;lt;link rel=&amp;#8221;alternate&amp;#8221; media=&amp;#8221;handheld&amp;#8221; href=&amp;#8221;&lt;a href="http://test.mobi/"&gt;http://test.mobi&lt;/a&gt;/1.php&amp;#8221; /&amp;gt;&lt;/p&gt;  &lt;p style="margin-left:42.0pt;text-indent:-21.0pt;"&gt;&lt;span&gt;&lt;span&gt;3&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:宋体;"&gt;增加友好的移动优化&lt;/span&gt;META&lt;span style="font-family:宋体;"&gt;信息。如：&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:42.0pt;text-indent:0cm;"&gt;&amp;lt;meta name=&amp;#8221;HandheldFriendly&amp;#8221; value=&amp;#8221;true&amp;#8221;&amp;gt;&lt;/p&gt;  &lt;p style="margin-left:42.0pt;text-indent:0cm;"&gt;&amp;lt;meta name=&amp;#8221;MobileOptimized&amp;#8221; value=&amp;#8221;320&amp;#8221;&amp;gt;&lt;/p&gt;  &lt;p style="margin-left:42.0pt;text-indent:-21.0pt;"&gt;&lt;span&gt;&lt;span&gt;4&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:宋体;"&gt;使用响应头：&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:42.0pt;text-indent:0cm;"&gt;Cache-Control: no-transform &lt;span style="font-family: 宋体;"&gt;（禁止转化）&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:42.0pt;text-indent:0cm;"&gt;Vary: User-Agent&amp;nbsp;(&lt;span style="font-family:宋体;"&gt;代理或者转化服务器要重用缓存文档，必须根据&lt;/span&gt;User-Agent&lt;span style="font-family:宋体;"&gt;来进行，即缓存只针对提供相同&lt;/span&gt;User-Agent&lt;span style="font-family:宋体;"&gt;的设备进行响应&lt;/span&gt;)&lt;/p&gt;  &lt;p style="margin-left:42.0pt;text-indent:-21.0pt;"&gt;&lt;span&gt;&lt;span&gt;5&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:宋体;"&gt;使用较小的文档。如果有可能控制页面文档在&lt;/span&gt;15kb&lt;span style="font-family:宋体;"&gt;以下。&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:42.0pt;text-indent:-21.0pt;"&gt;&lt;span&gt;&lt;span&gt;6&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:宋体;"&gt;通过程序识别代码转换器：&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:42.0pt"&gt;A&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family:宋体;"&gt;使用设备数据库&lt;/span&gt;API&lt;span style="font-family:宋体;"&gt;提供的方法来识别。&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left: 42pt; "&gt;B&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family:宋体;"&gt;自定义程序识别。含&lt;/span&gt;&amp;#8221;X-Device&amp;#8221;&lt;span style="font-family:宋体;"&gt;、&lt;/span&gt;&amp;#8221;Via&amp;#8221;&lt;span style="font-family:宋体;"&gt;、&lt;/span&gt;&amp;#8221;X-Mobile-Gateway&amp;#8221;&lt;span style="font-family: 宋体; "&gt;的请求头等。&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:42.0pt"&gt;&lt;span style="font-family:宋体;"&gt;一般上面两种同时使用。因为设备数据库提供的方法很可能无法正确识别。&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-left:42.0pt"&gt;&lt;span style="font-family:宋体;"&gt;在识别了来自代码转换器的请求之后，可以采取相应的对策（如上面的方法&lt;/span&gt;4&lt;span style="font-family:宋体;"&gt;，发送特定的响应头信息）&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/rethink/aggbug/2024638.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/rethink/archive/2011/04/22/2024638.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/rethink/archive/2011/04/08/2009419.html</id><title type="text">导数据batch程序性能优化笔记</title><summary type="text">1	一次性读取整个csv文件为大数组，再进行处理，逻辑上虽然直观，但内存占用很大，效率低。应该读取一行，处理一行。2	如果有多级循环，内层循环数组的时候，如果确定某个值已经不再使用了，可以直接unset掉该值，这样可以减少内层循环的次数，提高效率。</summary><published>2011-04-08T06:09:00Z</published><updated>2011-04-08T06:09:00Z</updated><author><name>rethink</name><uri>http://www.cnblogs.com/rethink/</uri></author><link rel="alternate" href="http://www.cnblogs.com/rethink/archive/2011/04/08/2009419.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/rethink/archive/2011/04/08/2009419.html"/><content type="html">&lt;p&gt;1&lt;span  style="white-space:pre"&gt;	&lt;/span&gt;一次性读取整个csv文件为大数组，再进行处理，逻辑上虽然直观，但内存占用很大，效率低。应该读取一行，处理一行。&lt;/p&gt;&lt;p&gt;2&lt;span  style="white-space: pre; "&gt;	&lt;/span&gt;如果有多级循环，内层循环数组的时候，如果确定某个值已经不再使用了，可以直接unset掉该值，这样可以减少内层循环的次数，提高效率。&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/rethink/aggbug/2009419.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/rethink/archive/2011/04/08/2009419.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/rethink/archive/2011/02/23/1962290.html</id><title type="text">pptx,docx,xlsx 文件下载问题</title><summary type="text">pptx,docx,xlsx 格式的文件，在某些ie浏览器（如IE7）中下载这些文件时会出现问题：下载pptx和xlsx文件时，会变成zip文件；docx则无法下载。解决办法：在apache的mime.types文件中添加 application/vnd.ms-powerpoint pptx application/vnd.openxmlformats xlsx 可以使pptx，xlsx可以正常下载。docx的下载目前没有找到好的简单办法。(可以考虑通过程序输出)。建议： 提供下载的资料文件格式最好是ppt，doc，xls等，不要使用pptx,docx,xlsx 。</summary><published>2011-02-23T06:44:00Z</published><updated>2011-02-23T06:44:00Z</updated><author><name>rethink</name><uri>http://www.cnblogs.com/rethink/</uri></author><link rel="alternate" href="http://www.cnblogs.com/rethink/archive/2011/02/23/1962290.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/rethink/archive/2011/02/23/1962290.html"/><content type="html">&lt;div&gt;pptx,docx,xlsx  格式的文件，在某些ie浏览器（如IE7）中下载这些文件时会出现问题：&lt;br /&gt;下载pptx和xlsx文件时，会变成zip文件；docx则无法下载。&lt;br /&gt;&lt;br /&gt;解决办法：&lt;br /&gt;在apache的mime.types文件中添加&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;  application/vnd.ms-powerpoint&amp;nbsp;&amp;nbsp; pptx &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; application/vnd.openxmlformats&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  xlsx&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;可以使pptx，xlsx可以正常下载。&lt;br /&gt;docx的下载目前没有找到好的简单办法。(可以考虑通过程序输出)。&lt;br /&gt;&lt;br /&gt;建议：&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;  提供下载的资料文件格式最好是ppt，doc，xls等，不要使用pptx,docx,xlsx 。&lt;/div&gt;&lt;img src="http://www.cnblogs.com/rethink/aggbug/1962290.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/rethink/archive/2011/02/23/1962290.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/rethink/archive/2010/12/28/1873718.html</id><title type="text">phpunit相关</title><summary type="text">1　　命令PHPUnit 3.4.15 by Sebastian Bergmann.Usage: phpunit [switches] UnitTest [UnitTest.php] phpunit [switches] &amp;lt;directory&amp;gt;--log-junit &amp;lt;file&amp;gt; Log test execution in JUnit XML format to file.--log-tap &amp;lt;file&amp;gt; Log test execution in TAP format to file.--log-json &amp;lt;file&amp;gt; Log test execution in JSON format.--</summary><published>2010-12-28T02:09:00Z</published><updated>2010-12-28T02:09:00Z</updated><author><name>rethink</name><uri>http://www.cnblogs.com/rethink/</uri></author><link rel="alternate" href="http://www.cnblogs.com/rethink/archive/2010/12/28/1873718.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/rethink/archive/2010/12/28/1873718.html"/><content type="html">&lt;p&gt;&lt;strong&gt;1　　命令&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;PHPUnit 3.4.15 by Sebastian Bergmann.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Usage: phpunit [switches] UnitTest [UnitTest.php]&lt;/p&gt;&lt;p&gt;phpunit [switches] &amp;lt;directory&amp;gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;--log-junit &amp;lt;file&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; Log test execution in JUnit XML format to file.&lt;/p&gt;&lt;p&gt;--log-tap &amp;lt;file&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Log test execution in TAP format to file.&lt;/p&gt;&lt;p&gt;--log-json &amp;lt;file&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Log test execution in JSON format.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;--coverage-html &amp;lt;dir&amp;gt; &amp;nbsp; &amp;nbsp;Generate code coverage report in HTML format.&lt;/p&gt;&lt;p&gt;--coverage-clover &amp;lt;file&amp;gt; Write code coverage data in Clover XML format.&lt;/p&gt;&lt;p&gt;--coverage-source &amp;lt;dir&amp;gt; &amp;nbsp;Write code coverage / source data in XML format.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;--story-html &amp;lt;file&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;Write Story/BDD results in HTML format to file.&lt;/p&gt;&lt;p&gt;--story-text &amp;lt;file&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;Write Story/BDD results in Text format to file.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;--testdox-html &amp;lt;file&amp;gt; &amp;nbsp; &amp;nbsp;Write agile documentation in HTML format to file.&lt;/p&gt;&lt;p&gt;--testdox-text &amp;lt;file&amp;gt; &amp;nbsp; &amp;nbsp;Write agile documentation in Text format to file.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;--filter &amp;lt;pattern&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; Filter which tests to run.&lt;/p&gt;&lt;p&gt;--group ... &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Only runs tests from the specified group(s).&lt;/p&gt;&lt;p&gt;--exclude-group ... &amp;nbsp; &amp;nbsp; &amp;nbsp;Exclude tests from the specified group(s).&lt;/p&gt;&lt;p&gt;--list-groups &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;List available test groups.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;--loader &amp;lt;loader&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;TestSuiteLoader implementation to use.&lt;/p&gt;&lt;p&gt;--repeat &amp;lt;times&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Runs the test(s) repeatedly.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;--story &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Report test execution progress in Story/BDD format.&lt;/p&gt;&lt;p&gt;--tap &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Report test execution progress in TAP format.&lt;/p&gt;&lt;p&gt;--testdox &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Report test execution progress in TestDox format.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;--colors &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Use colors in output.&lt;/p&gt;&lt;p&gt;--stderr &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Write to STDERR instead of STDOUT.&lt;/p&gt;&lt;p&gt;--stop-on-failure &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Stop execution upon first error or failure.&lt;/p&gt;&lt;p&gt;--verbose &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Output more verbose information.&lt;/p&gt;&lt;p&gt;--wait &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Waits for a keystroke after each test.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;--skeleton-class &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Generate Unit class for UnitTest in UnitTest.php.&lt;/p&gt;&lt;p&gt;--skeleton-test &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Generate UnitTest class for Unit in Unit.php.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;--process-isolation &amp;nbsp; &amp;nbsp; &amp;nbsp;Run each test in a separate PHP process.&lt;/p&gt;&lt;p&gt;--no-globals-backup &amp;nbsp; &amp;nbsp; &amp;nbsp;Do not backup and restore $GLOBALS for each test.&lt;/p&gt;&lt;p&gt;--static-backup &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Backup and restore static attributes for each test.&lt;/p&gt;&lt;p&gt;--syntax-check &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Try to check source files for syntax errors.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;--bootstrap &amp;lt;file&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; A "bootstrap" PHP file that is run before the tests.&lt;/p&gt;&lt;p&gt;--configuration &amp;lt;file&amp;gt; &amp;nbsp; Read configuration from XML file.&lt;/p&gt;&lt;p&gt;--no-configuration &amp;nbsp; &amp;nbsp; &amp;nbsp; Ignore default configuration file (phpunit.xml).&lt;/p&gt;&lt;p&gt;--include-path &amp;lt;path(s)&amp;gt; Prepend PHP's include_path with given path(s).&lt;/p&gt;&lt;p&gt;-d key[=value] &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Sets a php.ini value.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;--help &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Prints this usage information.&lt;/p&gt;&lt;p&gt;--version &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Prints the version and exits.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;2&lt;span  style="white-space:pre"&gt;	&lt;/span&gt;sample 1：&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;DependencyFailureTest.php：&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;div&gt;&lt;!--&lt;br/ /&gt;&lt;br/ /&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br/ /&gt;http://www.CodeHighlighter.com/&lt;br/ /&gt;&lt;br/ /&gt;--&gt;&lt;span style="color: #000000;"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="color: #000000;"&gt;php&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;class&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;DependencyFailureTest&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;extends&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;PHPUnit_Framework_TestCase&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;function&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;testOne()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080;"&gt;$this&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;assertTrue(&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;true&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;/*&lt;/span&gt;&lt;span style="color: #008000;"&gt;*&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;@depends&amp;nbsp;testOne&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;*/&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;function&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;testTwo()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080;"&gt;$this&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;assertTrue(&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;false&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;/*&lt;/span&gt;&lt;span style="color: #008000;"&gt;*&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;@depends&amp;nbsp;testTwo&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;*/&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;function&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;testThree()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080;"&gt;$this&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;assertTrue(&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;true&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;function&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;testFour()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080;"&gt;$this&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;assertTrue(&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;true&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;/*&lt;/span&gt;&lt;span style="color: #008000;"&gt;*&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;@depends&amp;nbsp;testFive&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;*/&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;function&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;testSix()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080;"&gt;$this&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;assertTrue(&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;true&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;/*&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;"@depends&amp;nbsp;testTwo"&amp;nbsp;该注释标明testThree方法依赖于testTwo测试通过才行，否则会被skip。&lt;br /&gt;2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;testFour方法没有@depends的注释，所以不依赖于某个方法&lt;br /&gt;3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;testSix方法依赖于&amp;nbsp;testFive&amp;nbsp;测试通过才行，但是不存在testFive方法，所以也被skip&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;*/&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;?&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;运行：D:\www2\phpunit&amp;gt;phpunit --verbose DependencyFailureTest&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;结果：&lt;/p&gt;&lt;p&gt;PHPUnit 3.4.15 by Sebastian Bergmann.&lt;/p&gt;&lt;p&gt;DependencyFailureTest&lt;/p&gt;&lt;p&gt;.FSS&lt;/p&gt;&lt;p&gt;Time: 0 seconds, Memory: 4.00Mb&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;There was 1 failure:&lt;/p&gt;&lt;p&gt;1) DependencyFailureTest::testTwo&lt;/p&gt;&lt;p&gt;Failed asserting that &amp;lt;boolean:false&amp;gt; is true.&lt;/p&gt;&lt;p&gt;D:\www2\phpunit\DependencyFailureTest.php:14&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;There were 2 skipped tests:&lt;/p&gt;&lt;p&gt;1) DependencyFailureTest::testThree&lt;/p&gt;&lt;p&gt;This test depends on "DependencyFailureTest::testTwo" to pass.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;2) DependencyFailureTest::testSix&lt;/p&gt;&lt;p&gt;This test depends on "DependencyFailureTest::testFive" to pass.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;FAILURES!&lt;/p&gt;&lt;p&gt;Tests: 3, Assertions: 3, Failures: 1, Skipped: 2.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/rethink/aggbug/1873718.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/rethink/archive/2010/12/28/1873718.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry></feed>
