<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet type='text/xsl' href='http://miaomin.spaces.live.com/mmm2008-07-24_12.50/rsspretty.aspx?rssquery=en-US;http%3a%2f%2fmiaomin.spaces.live.com%2fcategory%2fPHP__xa5Text%2bprocessing%2ffeed.rss' version='1.0'?><rss version="2.0" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:msn="http://schemas.microsoft.com/msn/spaces/2005/rss" xmlns:live="http://schemas.microsoft.com/live/spaces/2006/rss" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:cf="http://www.microsoft.com/schemas/rss/core/2005" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>苗苗 合作 交流: PHP/Text processing</title><description /><link>http://miaomin.spaces.live.com/?_c11_BlogPart_BlogPart=blogview&amp;_c=BlogPart&amp;partqs=catPHP__xa5Text%2bprocessing</link><language>en-US</language><pubDate>Mon, 03 Sep 2007 03:40:18 GMT</pubDate><lastBuildDate>Mon, 03 Sep 2007 03:40:18 GMT</lastBuildDate><generator>Microsoft Spaces v1.1</generator><docs>http://www.rssboard.org/rss-specification</docs><ttl>60</ttl><cf:parentRSS>http://miaomin.spaces.live.com/blog/feed.rss</cf:parentRSS><live:type>blogcategory</live:type><live:identity><live:id>-8913911617972053559</live:id><live:alias>miaomin</live:alias></live:identity><cf:listinfo><cf:group ns="http://schemas.microsoft.com/live/spaces/2006/rss" element="typelabel" label="Type" /><cf:group ns="http://schemas.microsoft.com/live/spaces/2006/rss" element="tag" label="Tag" /><cf:group element="category" label="Category" /><cf:sort element="pubDate" label="Date" data-type="date" default="true" /><cf:sort element="title" label="Title" data-type="string" /><cf:sort ns="http://purl.org/rss/1.0/modules/slash/" element="comments" label="Comments" data-type="number" /></cf:listinfo><item><title>解决web服务器各种应用的乱码问题</title><link>http://miaomin.spaces.live.com/Blog/cns!844B6C9C838C59C9!326.entry</link><description>&lt;img src="http://bbs.chinaunix.net/images/default/logo.gif" alt="Board logo" border=0&gt;&lt;br&gt;&lt;br&gt;
&lt;b&gt;标题: &lt;/b&gt;解决web服务器各种应用的乱码问题,欢迎补充和讨论 &lt;b&gt;&lt;a href="http://bbs.chinaunix.net/viewthread.php?action=printable&amp;amp;tid=381406###"&gt;[打印本页]&lt;/a&gt;&lt;/b&gt;&lt;br&gt;
&lt;hr color="#808080" size=2 width="100%"&gt;
&lt;b&gt;作者: &lt;/b&gt;wingger     &lt;b&gt;时间: &lt;/b&gt;2004-8-5 22:51     &lt;b&gt;标题: &lt;/b&gt;解决web服务器各种应用的乱码问题,欢迎补充和讨论&lt;br&gt;&lt;br&gt;&lt;b&gt;乱码问题：&lt;/b&gt;&lt;br&gt;
&lt;br&gt;
（1）服务器端： &lt;br&gt;
修改httpd.conf (在Redhat中放置的位置为/etc/httpd/conf/) &lt;br&gt;
查找： &lt;br&gt;
AddDefaultCharset ISO-8859-1 &lt;br&gt;
改成：&lt;br&gt;&lt;br&gt;&lt;div&gt;&lt;div style="float:left"&gt;CODE:&lt;/div&gt;&lt;div style="text-align:right;float:right"&gt;&lt;a href="http://bbs.chinaunix.net/viewthread.php?action=printable&amp;amp;tid=381406###"&gt;[Copy to clipboard]&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;#AddDefaultCharset ISO-8859-1 &lt;br&gt;
&lt;br&gt;
AddDefaultCharset off &lt;/div&gt;]&lt;br&gt;
&lt;br&gt;
这种方式关掉了服务器的默认语言的发送，这样仅凭html文件头中设置的语言来决定网页语言。 &lt;br&gt;
&lt;br&gt;
很多文章都说通过修改为 AddDefaultCharset GB2312
把缺省语言改成GB2312来解决中文乱码，确实GB2312内码的网页可以正常显示了，但这并非万全之策。因为当你的网页内码不是GB2312，就算你
在网页用下面的meta指定了正确的语言，如ISO8859-1，也不会解码为ISO8859-1，因为Apache已经先你一步将GB2312指定为网
页的语言了，&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
（2）养成良好的习惯，在每个网页的&amp;lt;head&amp;gt;;&amp;lt;/head&amp;gt;;的最前面加入这行： &lt;br&gt;
&lt;br&gt;
　　　　&lt;br&gt;&lt;br&gt;&lt;div&gt;&lt;div style="float:left"&gt;CODE:&lt;/div&gt;&lt;div style="text-align:right;float:right"&gt;&lt;a href="http://bbs.chinaunix.net/viewthread.php?action=printable&amp;amp;tid=381406###"&gt;[Copy to clipboard]&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&amp;lt;meta http-equiv=&amp;quot;Content-Type&amp;quot; content=&amp;quot;text/html; charset=gb2312&amp;quot;&amp;gt;; &lt;/div&gt;　　一般的中文版网页编辑工具（例如FrontPage、Dreamweaver等）都会自动加上这行。 &lt;br&gt;
&lt;br&gt;
3、如何解决中文文件名无法访问 &lt;br&gt;
&lt;br&gt;
　&lt;br&gt;&lt;br&gt;&lt;div&gt;&lt;div style="float:left"&gt;CODE:&lt;/div&gt;&lt;div style="text-align:right;float:right"&gt;&lt;a href="http://bbs.chinaunix.net/viewthread.php?action=printable&amp;amp;tid=381406###"&gt;[Copy to clipboard]&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;　在ie中选择 工具 -&amp;gt;; internet选项 -&amp;gt;; 高级 -&amp;gt;; 取消“总是以UTF-8发送URL”。 &lt;/div&gt;&lt;b&gt;UTF-8网页空白，在网页中加上metadata标识后，还需要手动调整编码為 utf-8 才能正常显示&lt;/b&gt;&lt;br&gt;
&lt;br&gt;
如果使用的是Mozilla、Mozilla Firefox、Sarafi等其他目前流行的浏览器，通常就不会有这样的问题。&lt;br&gt;
&lt;br&gt;
在网页的meta中指定用UTF-8：&lt;br&gt;&lt;br&gt;&lt;div&gt;&lt;div style="float:left"&gt;CODE:&lt;/div&gt;&lt;div style="text-align:right;float:right"&gt;&lt;a href="http://bbs.chinaunix.net/viewthread.php?action=printable&amp;amp;tid=381406###"&gt;[Copy to clipboard]&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&amp;lt;meta http-equiv=&amp;quot;Content-Type&amp;quot; content=&amp;quot;text/html; charset=UTF-8&amp;quot; /&amp;gt;; &lt;/div&gt;在&amp;lt;head&amp;gt;;&amp;lt;/head&amp;gt;;之前，把&amp;quot;Content-Type&amp;quot;放在最前面，便可以解決这样的问题了。 &lt;br&gt;
&lt;br&gt;
原因：&lt;br&gt;
&lt;br&gt;
IE 解析网页编码时是 HTML 內的标识优先的，然后是 HTTP header ；而mozilla 系列的浏览器刚刚好相反。&lt;br&gt;
&lt;br&gt;
一般情况在，很多人是把&amp;lt;title&amp;gt;;&amp;lt;/title&amp;gt;;排在最前面，并且在title中就出现了UTF-8中文，这样，IE
在解析时，就先遇到UTF-8，不往下解析了，因此必须把如果把meta放在UTF-8出现之前，这样IE才能判断这个网页是以UTF-8编码的。 &lt;br&gt;
&lt;br&gt;
&lt;br&gt;
总之：&lt;br&gt;
无论是 PHP、JSP、ASP 或其他动态网页的脚本语言，如果需要作编码设定，最好放在最前面。&lt;br&gt;
&lt;br&gt;
&lt;b&gt;使用php,也可以定义php的默认语言. &lt;/b&gt;&lt;br&gt;
&lt;br&gt;
php.ini中：&lt;br&gt;&lt;br&gt;&lt;div&gt;&lt;div style="float:left"&gt;CODE:&lt;/div&gt;&lt;div style="text-align:right;float:right"&gt;&lt;a href="http://bbs.chinaunix.net/viewthread.php?action=printable&amp;amp;tid=381406###"&gt;[Copy to clipboard]&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;default_charset = &amp;quot;gb2312&amp;quot; &lt;/div&gt;释掉此行，做了以上修改，一样是为了让浏览器根据网页头中的charset来自动选择语言，这样就可以在同台服务器上提供多种语言的网页服务。&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;b&gt;java中文乱码的解决 &lt;/b&gt;&lt;br&gt;
&lt;br&gt;
转&lt;br&gt;
 &lt;br&gt;
 &lt;br&gt;
在基于JAVA的编程中，经常会碰到汉字的处里及显示的问题，比如一大堆乱码或问号。&lt;br&gt;
这是因为JAVA中默认的编码方式是UNICODE，而中国人通常使用的文件和DB都是基于GB2312或者BIG5等编码，故会出现此问题。&lt;br&gt;
&lt;br&gt;
&lt;b&gt;1、在网页中输出中文。&lt;/b&gt;&lt;br&gt;
&lt;br&gt;
JAVA在网络传输中使用的编码是&amp;quot;ISO-8859-1&amp;quot;，故在输出时需要进行转化，如：&lt;br&gt;
String  str=&amp;quot;中文&amp;quot;;&lt;br&gt;
str=new  String(str.getBytes(&amp;quot;GB2312&amp;quot;&lt;img src="http://bbs.chinaunix.net/images/smilies/icon_wink.gif" align=absmiddle border=0&gt;,&amp;quot;8859_1&amp;quot;&lt;img src="http://bbs.chinaunix.net/images/smilies/icon_wink.gif" align=absmiddle border=0&gt;;&lt;br&gt;
但如果在编译程序时，使用的编码是“GB2312”,且在中文平台上运行此程序，不会出现此问题，一定要注意。&lt;br&gt;
&lt;br&gt;
&lt;b&gt;2、从参数中读取中文&lt;/b&gt;&lt;br&gt;
&lt;br&gt;
这正好与在网页中输出相反如：&lt;br&gt;
str=new  String(str.getBytes(&amp;quot;8859_1&amp;quot;&lt;img src="http://bbs.chinaunix.net/images/smilies/icon_wink.gif" align=absmiddle border=0&gt;,&amp;quot;GB2312&amp;quot;&lt;img src="http://bbs.chinaunix.net/images/smilies/icon_wink.gif" align=absmiddle border=0&gt;;&lt;br&gt;
&lt;br&gt;
&lt;b&gt;3、操作DB中的中文问题&lt;/b&gt;&lt;br&gt;
&lt;br&gt;
一个较简单的方法是：在“控制面扳”中，把“区域”设置为“英语(美国)”。如果还会出现乱码，还可进行如下设置：&lt;br&gt;
取中文时：str=new  String(str.getBytes(&amp;quot;GB2312&amp;quot;&lt;img src="http://bbs.chinaunix.net/images/smilies/icon_wink.gif" align=absmiddle border=0&gt;);&lt;br&gt;
向DB中输入中文：str=new  String(str.getBytes(&amp;quot;ISO-8859-1&amp;quot;&lt;img src="http://bbs.chinaunix.net/images/smilies/icon_wink.gif" align=absmiddle border=0&gt;);&lt;br&gt;
&lt;br&gt;
&lt;b&gt;4、在JSP中的中文解决：&lt;/b&gt;&lt;br&gt;
&lt;br&gt;
在“控制面扳”中，把“区域”设置为“英语(美国)”.&lt;br&gt;
在JSP页面中加入：&lt;br&gt;
如果还不行正常显示，则还要进行下面的转换：&lt;br&gt;
如：name=new  String(name.getBytes(&amp;quot;ISO-8859-1&amp;quot;&lt;img src="http://bbs.chinaunix.net/images/smilies/icon_wink.gif" align=absmiddle border=0&gt;,&amp;quot;GBK&amp;quot;&lt;img src="http://bbs.chinaunix.net/images/smilies/icon_wink.gif" align=absmiddle border=0&gt;;&lt;br&gt;
就不会出现中文问题了。&lt;br&gt;
&lt;br&gt;
&lt;b&gt;CGI的？不知道对不？&lt;/b&gt;&lt;br&gt;
&lt;br&gt;
找到CGI.pm，打开它，找到$self-&amp;gt;;charset('ISO-8859-1');将它改为$self-&amp;gt;;charset('GB2312');&lt;hr color="#808080" size=2 width="100%"&gt;
&lt;b&gt;作者: &lt;/b&gt;wingger     &lt;b&gt;时间: &lt;/b&gt;2004-10-10 11:03     &lt;b&gt;标题: &lt;/b&gt;解决web服务器各种应用的乱码问题,欢迎补充和讨论&lt;br&gt;&lt;br&gt;UP&lt;hr color="#808080" size=2 width="100%"&gt;
&lt;b&gt;作者: &lt;/b&gt;haohaoo     &lt;b&gt;时间: &lt;/b&gt;2004-10-11 11:59     &lt;b&gt;标题: &lt;/b&gt;解决web服务器各种应用的乱码问题,欢迎补充和讨论&lt;br&gt;&lt;br&gt;MM施主，俺崇拜你了&lt;hr color="#808080" size=2 width="100%"&gt;
&lt;b&gt;作者: &lt;/b&gt;wingger     &lt;b&gt;时间: &lt;/b&gt;2004-10-12 11:50     &lt;b&gt;标题: &lt;/b&gt;解决web服务器各种应用的乱码问题,欢迎补充和讨论&lt;br&gt;&lt;br&gt;补充：&lt;br&gt;
如果使用php,也可以定义php的默认语言. &lt;br&gt;
&lt;br&gt;
php.ini中： &lt;br&gt;
&lt;br&gt;
;default_charset = &amp;quot;gb2312&amp;quot; &lt;br&gt;
&lt;br&gt;
注意这里是注释掉此行，做了以上修改，目的是为让浏览器根据网页头中的charset来自动选择语言，这样就可以在同台服务器上提供多种语言的网页服务。&lt;hr color="#808080" size=2 width="100%"&gt;
&lt;b&gt;作者: &lt;/b&gt;wingger     &lt;b&gt;时间: &lt;/b&gt;2004-10-12 12:31     &lt;b&gt;标题: &lt;/b&gt;解决web服务器各种应用的乱码问题,欢迎补充和讨论&lt;br&gt;&lt;br&gt;&lt;b&gt;java中文乱码的解决 &lt;/b&gt;&lt;br&gt;
&lt;br&gt;
转&lt;br&gt;
 &lt;br&gt;
 &lt;br&gt;
在基于JAVA的编程中，经常会碰到汉字的处里及显示的问题，比如一大堆乱码或问号。&lt;br&gt;
这是因为JAVA中默认的编码方式是UNICODE，而中国人通常使用的文件和DB都是基于GB2312或者BIG5等编码，故会出现此问题。&lt;br&gt;
&lt;br&gt;
&lt;b&gt;1、在网页中输出中文。&lt;/b&gt;&lt;br&gt;
&lt;br&gt;
JAVA在网络传输中使用的编码是&amp;quot;ISO-8859-1&amp;quot;，故在输出时需要进行转化，如：&lt;br&gt;
String  str=&amp;quot;中文&amp;quot;;&lt;br&gt;
str=new  String(str.getBytes(&amp;quot;GB2312&amp;quot;&lt;img src="http://bbs.chinaunix.net/images/smilies/icon_wink.gif" align=absmiddle border=0&gt;,&amp;quot;8859_1&amp;quot;&lt;img src="http://bbs.chinaunix.net/images/smilies/icon_wink.gif" align=absmiddle border=0&gt;;&lt;br&gt;
但如果在编译程序时，使用的编码是“GB2312”,且在中文平台上运行此程序，不会出现此问题，一定要注意。&lt;br&gt;
&lt;br&gt;
&lt;b&gt;2、从参数中读取中文&lt;/b&gt;&lt;br&gt;
&lt;br&gt;
这正好与在网页中输出相反如：&lt;br&gt;
str=new  String(str.getBytes(&amp;quot;8859_1&amp;quot;&lt;img src="http://bbs.chinaunix.net/images/smilies/icon_wink.gif" align=absmiddle border=0&gt;,&amp;quot;GB2312&amp;quot;&lt;img src="http://bbs.chinaunix.net/images/smilies/icon_wink.gif" align=absmiddle border=0&gt;;&lt;br&gt;
&lt;br&gt;
&lt;b&gt;3、操作DB中的中文问题&lt;/b&gt;&lt;br&gt;
&lt;br&gt;
一个较简单的方法是：在“控制面扳”中，把“区域”设置为“英语(美国)”。如果还会出现乱码，还可进行如下设置：&lt;br&gt;
取中文时：str=new  String(str.getBytes(&amp;quot;GB2312&amp;quot;&lt;img src="http://bbs.chinaunix.net/images/smilies/icon_wink.gif" align=absmiddle border=0&gt;);&lt;br&gt;
向DB中输入中文：str=new  String(str.getBytes(&amp;quot;ISO-8859-1&amp;quot;&lt;img src="http://bbs.chinaunix.net/images/smilies/icon_wink.gif" align=absmiddle border=0&gt;);&lt;br&gt;
&lt;br&gt;
&lt;b&gt;4、在JSP中的中文解决：&lt;/b&gt;&lt;br&gt;
&lt;br&gt;
在“控制面扳”中，把“区域”设置为“英语(美国)”.&lt;br&gt;
在JSP页面中加入：&lt;br&gt;
如果还不行正常显示，则还要进行下面的转换：&lt;br&gt;
如：name=new  String(name.getBytes(&amp;quot;ISO-8859-1&amp;quot;&lt;img src="http://bbs.chinaunix.net/images/smilies/icon_wink.gif" align=absmiddle border=0&gt;,&amp;quot;GBK&amp;quot;&lt;img src="http://bbs.chinaunix.net/images/smilies/icon_wink.gif" align=absmiddle border=0&gt;;&lt;br&gt;
就不会出现中文问题了。&lt;hr color="#808080" size=2 width="100%"&gt;
&lt;b&gt;作者: &lt;/b&gt;level     &lt;b&gt;时间: &lt;/b&gt;2004-10-12 12:39     &lt;b&gt;标题: &lt;/b&gt;解决web服务器各种应用的乱码问题,欢迎补充和讨论&lt;br&gt;&lt;br&gt;&lt;img src="http://bbs.chinaunix.net/images/smilies/em02.gif" align=absmiddle border=0&gt;&lt;hr color="#808080" size=2 width="100%"&gt;
&lt;b&gt;作者: &lt;/b&gt;wingger     &lt;b&gt;时间: &lt;/b&gt;2004-10-12 12:49     &lt;b&gt;标题: &lt;/b&gt;解决web服务器各种应用的乱码问题,欢迎补充和讨论&lt;br&gt;&lt;br&gt;CGI的应该是这个：&lt;br&gt;
&lt;br&gt;
找到CGI.pm，找到$self-&amp;gt;;charset('ISO-8859-1');将它改为$self-&amp;gt;;charset('GB2312');&lt;br&gt;
&lt;br&gt;
或按以上同样处理，应该可以&lt;hr color="#808080" size=2 width="100%"&gt;
&lt;b&gt;作者: &lt;/b&gt;wingger     &lt;b&gt;时间: &lt;/b&gt;2004-10-31 14:59     &lt;b&gt;标题: &lt;/b&gt;解决web服务器各种应用的乱码问题,欢迎补充和讨论&lt;br&gt;&lt;br&gt;&lt;b&gt;彻底解决Tomcat 5.0.19中文乱码&lt;/b&gt;&lt;br&gt;
&lt;br&gt;
　　&lt;b&gt;一、Include的页面乱码&lt;/b&gt;&lt;br&gt;
&lt;br&gt;
　　现象：include进来的页面出现乱码，其它页面正常。&lt;br&gt;
&lt;br&gt;
　　原因：Tomcat在缺省情况下使用ISO-8859-1编码，但是在include时有时Tomcat不能正确根据外层.jsp文件的编码解析include进来的文件，造成include进来的文件中的中文乱码。&lt;br&gt;
&lt;br&gt;
　　解决：这儿可以有很多解决办法，但是对于我们的中文环境，从根本上的解决办法是将Tomcat 5.0.19的核心缺省编码从ISO-8859-1修改为GBK 。&lt;br&gt;
&lt;br&gt;
　　&lt;br&gt;
&lt;b&gt;　　二、提交的数据乱码&lt;/b&gt;&lt;br&gt;
&lt;br&gt;
　　现象：通过表单提交的数据出现乱码。&lt;br&gt;
&lt;br&gt;
　　原因：原因未明。可能是Tomcat在接收到请求后，并没有能够根据request中的信息提前正确的编码方式。&lt;br&gt;
&lt;br&gt;
　　解决：可以添加一个设置字符集的Filter。&lt;br&gt;&lt;br&gt;&lt;div&gt;&lt;div style="float:left"&gt;CODE:&lt;/div&gt;&lt;div style="text-align:right;float:right"&gt;&lt;a href="http://bbs.chinaunix.net/viewthread.php?action=printable&amp;amp;tid=381406###"&gt;[Copy to clipboard]&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;package filters;&lt;br&gt;
&lt;br&gt;
import java.io.IOException;&lt;br&gt;
import javax.servlet.Filter;&lt;br&gt;
import javax.servlet.FilterChain;&lt;br&gt;
import javax.servlet.FilterConfig;&lt;br&gt;
import javax.servlet.ServletException;&lt;br&gt;
import javax.servlet.ServletRequest;&lt;br&gt;
import javax.servlet.ServletResponse;&lt;br&gt;
import javax.servlet.UnavailableException;&lt;br&gt;
&lt;br&gt;
public class SetCharacterEncodingFilter implements Filter {&lt;br&gt;
　protected String encoding = null;&lt;br&gt;
　protected FilterConfig filterConfig = null;&lt;br&gt;
　protected boolean ignore = true;&lt;br&gt;
&lt;br&gt;
　public void destroy() {&lt;br&gt;
　　this.encoding = null;&lt;br&gt;
　　this.filterConfig = null;&lt;br&gt;
　}&lt;br&gt;
&lt;br&gt;
public void doFilter(ServletRequest request, ServletResponse response,&lt;br&gt;
FilterChain chain)&lt;br&gt;
throws IOException, ServletException {&lt;br&gt;
&lt;br&gt;
　// Conditionally select and set the character encoding to be used&lt;br&gt;
　if (ignore || (request.getCharacterEncoding() == null)) {&lt;br&gt;
　　String encoding = selectEncoding(request);&lt;br&gt;
　　if (encoding != null)&lt;br&gt;
　　　request.setCharacterEncoding(encoding);&lt;br&gt;
　}&lt;br&gt;
&lt;br&gt;
　// Pass control on to the next filter&lt;br&gt;
　chain.doFilter(request, response);&lt;br&gt;
&lt;br&gt;
}&lt;br&gt;
&lt;br&gt;
public void init(FilterConfig filterConfig) throws ServletException {&lt;br&gt;
&lt;br&gt;
　this.filterConfig = filterConfig;&lt;br&gt;
　this.encoding = filterConfig.getInitParameter(&amp;quot;encoding&amp;quot;);&lt;br&gt;
　String value = filterConfig.getInitParameter(&amp;quot;ignore&amp;quot;);&lt;br&gt;
　if (value == null)&lt;br&gt;
　　this.ignore = true;&lt;br&gt;
　else if (value.equalsIgnoreCase(&amp;quot;true&amp;quot;))&lt;br&gt;
　　this.ignore = true;&lt;br&gt;
　else if (value.equalsIgnoreCase(&amp;quot;yes&amp;quot;))&lt;br&gt;
　　this.ignore = true;&lt;br&gt;
　else&lt;br&gt;
　　this.ignore = false;&lt;br&gt;
&lt;br&gt;
}&lt;br&gt;
&lt;br&gt;
protected String selectEncoding(ServletRequest request) {&lt;br&gt;
　return (this.encoding);&lt;br&gt;
}&lt;br&gt;
&lt;br&gt;
} &lt;/div&gt;　　&lt;br&gt;
&lt;br&gt;
&lt;b&gt;配置web.xml&lt;/b&gt;&lt;br&gt;&lt;br&gt;&lt;div&gt;&lt;div style="float:left"&gt;CODE:&lt;/div&gt;&lt;div style="text-align:right;float:right"&gt;&lt;a href="http://bbs.chinaunix.net/viewthread.php?action=printable&amp;amp;tid=381406###"&gt;[Copy to clipboard]&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;＜filter＞&lt;br&gt;
　＜filter-name＞Set Character Encoding＜/filter-name＞&lt;br&gt;
　＜filter-class＞filters.SetCharacterEncodingFilter＜/filter-class＞&lt;br&gt;
　＜init-param＞&lt;br&gt;
　　＜param-name＞encoding＜/param-name＞&lt;br&gt;
　　＜param-value＞GBK＜/param-value＞&lt;br&gt;
　＜/init-param＞&lt;br&gt;
＜/filter＞&lt;br&gt;
&lt;br&gt;
＜filter-mapping＞&lt;br&gt;
　＜filter-name＞Set Character Encoding＜/filter-name＞&lt;br&gt;
　＜url-pattern＞/*＜/url-pattern＞&lt;br&gt;
＜/filter-mapping＞&lt;/div&gt;&lt;hr color="#808080" size=2 width="100%"&gt;
&lt;b&gt;作者: &lt;/b&gt;wingger     &lt;b&gt;时间: &lt;/b&gt;2004-10-31 15:05     &lt;b&gt;标题: &lt;/b&gt;解决web服务器各种应用的乱码问题,欢迎补充和讨论&lt;br&gt;&lt;br&gt;&lt;b&gt;没试过不知道行不行&lt;/b&gt;&lt;br&gt;
&lt;br&gt;
&lt;b&gt;java Servlet 中文乱码问题&lt;/b&gt;&lt;br&gt;&lt;br&gt;&lt;div&gt;&lt;div style="float:left"&gt;CODE:&lt;/div&gt;&lt;div style="text-align:right;float:right"&gt;&lt;a href="http://bbs.chinaunix.net/viewthread.php?action=printable&amp;amp;tid=381406###"&gt;[Copy to clipboard]&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;import java.io.*;&lt;br&gt;
import java.util.*;&lt;br&gt;
import javax.servlet.*;&lt;br&gt;
import javax.servlet.http.*;&lt;br&gt;
&lt;br&gt;
public class GetFormData extends HttpServlet&lt;br&gt;
{&lt;br&gt;
    public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException&lt;br&gt;
    {&lt;br&gt;
        String paramValues;&lt;br&gt;
        paramValues=request.getParameter(&amp;quot;UserName&amp;quot;;&lt;br&gt;
        response.setContentType(&amp;quot;text/html;charset=gb2312&amp;quot;;&lt;br&gt;
        PrintWriter out=response.getWriter();&lt;br&gt;
        out.println(&amp;quot;&amp;lt;html&amp;gt;;&amp;lt;title&amp;gt;;test&amp;lt;/title&amp;gt;;&amp;lt;body&amp;gt;;&amp;quot;;&lt;br&gt;
        out.println(&amp;quot;以下是收到的数据&amp;lt;br&amp;gt;;&amp;quot;;&lt;br&gt;
        out.println(&amp;quot;UserName=&amp;quot;+paramValues);&lt;br&gt;
        out.println(&amp;quot;&amp;lt;br&amp;gt;;接收结束&amp;quot;;&lt;br&gt;
        out.println(&amp;quot;&amp;lt;/body&amp;gt;;&amp;quot;;&lt;br&gt;
    }&lt;br&gt;
    public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException&lt;br&gt;
    {&lt;br&gt;
        doGet(request,response);&lt;br&gt;
    }&lt;br&gt;
&lt;br&gt;
}&lt;/div&gt;只需要把&lt;br&gt;&lt;br&gt;&lt;div&gt;&lt;div style="float:left"&gt;CODE:&lt;/div&gt;&lt;div style="text-align:right;float:right"&gt;&lt;a href="http://bbs.chinaunix.net/viewthread.php?action=printable&amp;amp;tid=381406###"&gt;[Copy to clipboard]&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;paramValues=request.getParameterValues(&amp;quot;UserName&amp;quot;改成下面的就可以了&lt;br&gt;
paramValues=request.getParameter(&amp;quot;UserName&amp;quot;;&lt;/div&gt;&lt;br&gt;&lt;br&gt;&lt;div&gt;&lt;div style="float:left"&gt;CODE:&lt;/div&gt;&lt;div style="text-align:right;float:right"&gt;&lt;a href="http://bbs.chinaunix.net/viewthread.php?action=printable&amp;amp;tid=381406###"&gt;[Copy to clipboard]&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;当然这句是必須的 response.setContentType(&amp;quot;text/html;charset=gb2312&amp;quot;&lt;/div&gt;在jsdk2.1 tomcat及Domino5.8上的Servlet引擎运行通过了&lt;hr color="#808080" size=2 width="100%"&gt;
&lt;b&gt;作者: &lt;/b&gt;wingger     &lt;b&gt;时间: &lt;/b&gt;2004-10-31 15:09     &lt;b&gt;标题: &lt;/b&gt;解决web服务器各种应用的乱码问题,欢迎补充和讨论&lt;br&gt;&lt;br&gt;&lt;b&gt;Weblogic Server中如何解决中文显示乱码问题 &lt;br&gt;
《世界计算机》IT.ICXO.COM ( 日期：2004-09-29 16:07) &lt;/b&gt;&lt;br&gt;
&lt;br&gt;
--------------------------------------------------------------------------------&lt;br&gt;
 &lt;br&gt;
 &lt;br&gt;
由于操作系统、浏览器、数据库、JVM采用的字符集都不一样，基于Weblogic
Server开发的应用经常出现中文显示乱码问题，其实在Weblogic
Server上运行的WEB应用有很多与字符集有关的设置，下面做一个总结,为了正确处理中文，最好把这些设置都设上。&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;b&gt;1. 在JSP文件头加入&lt;/b&gt;&lt;br&gt;&lt;br&gt;&lt;div&gt;&lt;div style="float:left"&gt;CODE:&lt;/div&gt;&lt;div style="text-align:right;float:right"&gt;&lt;a href="http://bbs.chinaunix.net/viewthread.php?action=printable&amp;amp;tid=381406###"&gt;[Copy to clipboard]&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&amp;lt;％@ page contentType=text/html; charset=GBK ％&amp;gt;; &lt;/div&gt;指定该JSP采用的字符集。&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;b&gt;2．在Weblogic.xml文件的中加入：&lt;/b&gt;&lt;br&gt;&lt;br&gt;&lt;div&gt;QUOTE:&lt;/div&gt;&lt;div&gt;encoding&lt;br&gt;
GBK&lt;/div&gt;指定JSP文件中采用的字符集，在JSP文件中的&amp;lt;％@ page contentType=text/html; charset=GBK ％&amp;gt;;会覆盖该设置&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;b&gt;3．在Weblogic.xml文件的中加入&lt;/b&gt;&lt;br&gt;&lt;br&gt;&lt;div&gt;&lt;div style="float:left"&gt;CODE:&lt;/div&gt;&lt;div style="text-align:right;float:right"&gt;&lt;a href="http://bbs.chinaunix.net/viewthread.php?action=printable&amp;amp;tid=381406###"&gt;[Copy to clipboard]&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;compilerSupportsEncoding&lt;br&gt;
true&lt;/div&gt;如果为TRUE，指定在编译JSP文件时，采用在JSP文件中定义的&lt;br&gt;
&amp;lt;％@ page contentType=text/html; charset=GBK ％&amp;gt;;或中定义的encoding参数中定义的字符集进行编码，如果为FALSE，则采用JVM中默认指定的字符集进行编码。&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;b&gt;4． Weblogic Server需要把HTTP request(GET 和POST)中的数据从它的原始编码转化为Unicode，以便Java servlet API进行处理&lt;/b&gt;，为了做这种转换，Weblogic Server需要知道HPPT request中的数据的编码方式。这可以通过在Weblogic.xml的中设置.&lt;br&gt;&lt;br&gt;&lt;div&gt;&lt;div style="float:left"&gt;CODE:&lt;/div&gt;&lt;div style="text-align:right;float:right"&gt;&lt;a href="http://bbs.chinaunix.net/viewthread.php?action=printable&amp;amp;tid=381406###"&gt;[Copy to clipboard]&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;〈INPUT-charset&amp;gt;;&lt;br&gt;
/&lt;br&gt;
GBK&lt;/div&gt;&lt;b&gt;5．从ORACLE数据库中检索出来的中文显示不正确时&lt;/b&gt;，在这种情况下，如果数据库使用的是中文字符集，并使用的是Type 2 JDBC Driver时，可加入Weblogic.codeset=GBK的属性来解决这个问题。代码如下：&lt;br&gt;&lt;br&gt;&lt;div&gt;&lt;div style="float:left"&gt;CODE:&lt;/div&gt;&lt;div style="text-align:right;float:right"&gt;&lt;a href="http://bbs.chinaunix.net/viewthread.php?action=printable&amp;amp;tid=381406###"&gt;[Copy to clipboard]&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;java.util.Properties props = new java.util.Properties();&lt;br&gt;
props.put(Weblogic.codeset, GBK);&lt;br&gt;
props.put(user, scott);&lt;br&gt;
props.put(password, tiger);&lt;br&gt;
String connectUrl = jdbc:Weblogic:oracle;&lt;br&gt;
Driver myDriver = (Driver)&lt;br&gt;
Class.forName(Weblogic.jdbc.oci.Driver).newInstance();&lt;br&gt;
Connection conn = &lt;br&gt;
myDriver.connect(connectUrl, props);&lt;/div&gt;&lt;b&gt;6． 如果是采用WTC调用Tuxedo中的服务&lt;/b&gt;，
在JSP页面中无法正确显示中文，必须使安装Tuxedo的服务器上的NLS_LANG环境变量与数据库中的字符集的设置一样。如后台Oracle数据库
中的字符集设置为SIMPLIFIED
CHINESE_CHINA.ZHS16GBK，那么Tuxedo应用服务器上的NLS_LANG环境变量应设置为：&lt;br&gt;&lt;br&gt;&lt;div&gt;&lt;div style="float:left"&gt;CODE:&lt;/div&gt;&lt;div style="text-align:right;float:right"&gt;&lt;a href="http://bbs.chinaunix.net/viewthread.php?action=printable&amp;amp;tid=381406###"&gt;[Copy to clipboard]&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;export NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK&lt;/div&gt;&lt;hr color="#808080" size=2 width="100%"&gt;
&lt;b&gt;作者: &lt;/b&gt;ccwwd     &lt;b&gt;时间: &lt;/b&gt;2004-11-22 14:39     &lt;b&gt;标题: &lt;/b&gt;解决web服务器各种应用的乱码问题,欢迎补充和讨论&lt;br&gt;&lt;br&gt;崇拜你呀！&lt;hr color="#808080" size=2 width="100%"&gt;
&lt;b&gt;作者: &lt;/b&gt;hitty     &lt;b&gt;时间: &lt;/b&gt;2005-7-6 14:09     &lt;b&gt;标题: &lt;/b&gt;解决web服务器各种应用的乱码问题,欢迎补充和讨论&lt;br&gt;&lt;br&gt;利害,加我吧....&lt;br&gt;
&lt;br&gt;
PHP中文乱码好像可以用:&lt;br&gt;
ini_set('default_charset','gb2312');&lt;br&gt;
来解决，要比改配置文件要灵活一些....&lt;hr color="#808080" size=2 width="100%"&gt;
&lt;b&gt;作者: &lt;/b&gt;kot31     &lt;b&gt;时间: &lt;/b&gt;2005-11-26 09:40&lt;br&gt;&lt;br&gt;刚来这个论坛，看到了楼主的宝文，冒昧的问一下，文章中的 &lt;img src="http://bbs.chinaunix.net/images/smilies/icon_wink.gif" align=absmiddle border=0&gt; 是干嘛用的？&lt;br&gt;&lt;br&gt;&lt;div&gt;&lt;div style="float:left"&gt;CODE:&lt;/div&gt;&lt;div style="text-align:right;float:right"&gt;&lt;a href="http://bbs.chinaunix.net/viewthread.php?action=printable&amp;amp;tid=381406###"&gt;[Copy to clipboard]&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;:wink:&lt;/div&gt;&lt;hr color="#808080" size=2 width="100%"&gt;
&lt;b&gt;作者: &lt;/b&gt;sipcom     &lt;b&gt;时间: &lt;/b&gt;2006-2-15 16:45&lt;br&gt;&lt;br&gt;我使用perl5.6，linux环境，用于连接oracle9i&lt;br&gt;
&lt;br&gt;
根据上面的提示将CGI.pm中的改为GB2312后，查询到的数据记录显示仍然为乱麻，中文无法显示，这是why？&lt;hr color="#808080" size=2 width="100%"&gt;
&lt;b&gt;作者: &lt;/b&gt;树和石头     &lt;b&gt;时间: &lt;/b&gt;2006-2-19 22:14     &lt;b&gt;标题: &lt;/b&gt;to sipcom:&lt;br&gt;&lt;br&gt;to sipcom:&lt;br&gt;
在linux环境下不应该把字符集设为GB2312，而应该是iso-8859-1，详细请参考以下内容：（资料来源：&lt;a href="http://www.javadict.com/zxxx/2005711170800.htm"&gt;http://www.javadict.com/zxxx/2005711170800.htm&lt;/a&gt;）&lt;br&gt;
&lt;br&gt;
Java/J2EE中文问题终极解决之道&lt;br&gt;
&lt;br&gt;
Java中文问题一直困扰着很多初学者，如果了解了Java系统的中文问题原理，我们就可以对中文问题能够采取根本的解决之道。&lt;br&gt;
&lt;br&gt;
　　最古老的解决方案是使用String的字节码转换，这种方案问题是不方便，我们需要破坏对象封装性，进行字节码转换。&lt;br&gt;
&lt;br&gt;
　　还有一种方式是对J2EE容器进行编码设置，如果J2EE应用系统脱离该容器，则会发生乱码，而且指定容器配置不符合J2EE应用和容器分离的原则。&lt;br&gt;
&lt;br&gt;
　　在Java内部运算中，涉及到的所有字符串都会被转化为UTF-8编码来进行运算。那么，在被Java转化之前，字符串是什么样的字符集？
Java总是根据操作系统的默认编码字符集来决定字符串的初始编码，而且Java系统的输入和输出的都是采取操作系统的默认编码。&lt;br&gt;
&lt;br&gt;
　　因此，如果能统一Java系统的输入、输出和操作系统3者的编码字符集合，将能够使Java系统正确处理和显示汉字。这是处理Java系统汉字的一个
原则，但是在实际项目中，能够正确抓住和控制住Java系统的输入和输出部分是比较难的。J2EE中，由于涉及到外部浏览器和数据库等，所以中文问题乱码
显得非常突出。&lt;br&gt;
&lt;br&gt;
　　J2EE应用程序是运行在J2EE容器中。在这个系统中，输入途径有很多种：一种是通过页面表单打包成请求（request）发往服务器的；第二种是
通过数据库读入；还有第3种输入比较复杂，JSP在第一次运行时总是被编译成Servlet，JSP中常常包含中文字符，那么编译使用javac时，
Java将根据默认的操作系统编码作为初始编码。除非特别指定，如在Jbuilder/eclipse中可以指定默认的字符集。&lt;br&gt;
&lt;br&gt;
　　输出途径也有几种：第一种是JSP页面的输出。由于JSP页面已经被编译成Servlet，那么在输出时，也将根据操作系统的默认编码来选择输出编码，除非指定输出编码方式；还有输出途径是数据库，将字符串输出到数据库。&lt;br&gt;
&lt;br&gt;
　　由此看来，一个J2EE系统的输入输出是非常复杂，而且是动态变化的，而Java是跨平台运行的，在实际编译和运行中，都可能涉及到不同的操作系统，如果任由Java自由根据操作系统来决定输入输出的编码字符集，这将不可控制地出现乱码。&lt;br&gt;
&lt;br&gt;
　　正是由于Java的跨平台特性，使得字符集问题必须由具体系统来统一解决，所以在一个Java应用系统中，解决中文乱码的根本办法是明确指定整个应用系统统一字符集。&lt;br&gt;
&lt;br&gt;
　　指定统一字符集时，到底是指定ISO8859_1 、GBK还是UTF-8呢？ &lt;br&gt;
&lt;br&gt;
　　（1）如统一指定为ISO8859_1，因为目前大多数软件都是西方人编制的，他们默认的字符集就是ISO8859_1，包括操作系统Linux和数据库MySQL等。这样，如果指定Jive统一编码为ISO8859_1，那么就有下面3个环节必须把握：&lt;br&gt;
&lt;br&gt;
　　开发和编译代码时指定字符集为ISO8859_1。&lt;br&gt;
&lt;br&gt;
　　运行操作系统的默认编码必须是ISO8859_1，如Linux。&lt;br&gt;
&lt;br&gt;
　　在JSP头部声明：&amp;lt;%@ page contentType=&amp;quot;text/html;charset=ISO8859_1&amp;quot; %&amp;gt;。&lt;br&gt;
&lt;br&gt;
　　（2）如果统一指定为GBK中文字符集，上述3个环节同样需要做到，不同的是只能运行在默认编码为GBK的操作系统，如中文Windows。&lt;br&gt;
&lt;br&gt;
　　统一编码为ISO8859_1和GBK虽然带来编制代码的方便，但是各自只能在相应的操作系统上运行。但是也破坏了Java跨平台运行的优越性，只在一定范围内行得通。例如，为了使得GBK编码在linux上运行，设置Linux编码为GBK。&lt;br&gt;
&lt;br&gt;
　　那么有没有一种除了应用系统以外不需要进行任何附加设置的中文编码根本解决方案呢？&lt;br&gt;
&lt;br&gt;
　　将Java/J2EE系统的统一编码定义为UTF-8。UTF-8编码是一种兼容所有语言的编码方式，惟一比较麻烦的就是要找到应用系统的所有出入口，然后使用UTF-8去“结扎”它。&lt;br&gt;
&lt;br&gt;
　　一个J2EE应用系统需要做下列几步工作：&lt;br&gt;
&lt;br&gt;
开发和编译代码时指定字符集为UTF-8。JBuilder和Eclipse都可以在项目属性中设置。 &lt;br&gt;
使用过滤器，如果所有请求都经过一个Servlet控制分配器，那么使用Servlet的filter执行语句，将所有来自浏览器的请求（request）转换为UTF-8，因为浏览器发过来的请求包根据浏览器所在的操作系统编码，可能是各种形式编码。关键一句：&lt;br&gt;
request.setCharacterEncoding(&amp;quot;UTF-8&amp;quot;)。&lt;br&gt;
网上有此filter的源码，Jdon框架源码中com.jdon.util.SetCharacterEncodingFilter&lt;br&gt;
需要配置web.xml 激活该Filter。 &lt;br&gt;
在JSP头部声明：&amp;lt;%@ page contentType=&amp;quot;text/html;charset= UTF-8&amp;quot; %&amp;gt;。 &lt;br&gt;
在Jsp的html代码中，声明UTF-8:&lt;br&gt;
&amp;lt;meta http-equiv=&amp;quot;Content-Type&amp;quot; content=&amp;quot;text/html; charset=utf-8&amp;quot;&amp;gt; &lt;br&gt;
设定数据库连接方式是UTF-8。例如连接MYSQL时配置URL如下：&lt;br&gt;
jdbc:mysql://localhost:3306/test?useUnicode=true&amp;amp;characterEncoding=UTF-8&lt;br&gt;
一般数据库都可以通过管理设置设定UTF-8 &lt;br&gt;
其他和外界交互时能够设定编码时就设定UTF-8，例如读取文件，操作XML等。 &lt;br&gt;
　　　　
笔者以前在Jsp/Servlet时就采取这个原则，后来使用Struts、Tapestry、EJB、Hibernate、Jdon等框架时，从未被乱
码困扰过，可以说适合各种架构。希望本方案供更多初学者分享，减少Java/J2EE的第一个拦路虎，也避免因为采取一些临时解决方案，导致中文问题一直
出现在新的技术架构中。&lt;hr color="#808080" size=2 width="100%"&gt;
&lt;b&gt;作者: &lt;/b&gt;sipcom     &lt;b&gt;时间: &lt;/b&gt;2006-2-20 12:01&lt;br&gt;&lt;br&gt;原来是iso-8859-1，但无法显示，在参考几个文档后，改为GB2312,但还是无法显示中文，我估计师apache的设定问题，但问题还没解决&lt;hr color="#808080" size=2 width="100%"&gt;
&lt;b&gt;作者: &lt;/b&gt;yzmxf     &lt;b&gt;时间: &lt;/b&gt;2006-2-20 20:50&lt;br&gt;&lt;br&gt;太谢谢了 &lt;br&gt;
&lt;br&gt;
今天就遇到了这个问题 明天去公司看看&lt;br&gt;
&lt;br&gt;
不过应该可以解决  &lt;br&gt;
&lt;br&gt;
谢谢法师斑竹 呵呵&lt;img src="http://bbs.chinaunix.net/images/smilies/em02.gif" align=absmiddle border=0&gt;&lt;img src="http://bbs.chinaunix.net/images/smilies/em02.gif" align=absmiddle border=0&gt;&lt;img src="http://bbs.chinaunix.net/images/smilies/em02.gif" align=absmiddle border=0&gt;&lt;hr color="#808080" size=2 width="100%"&gt;
&lt;b&gt;作者: &lt;/b&gt;树和石头     &lt;b&gt;时间: &lt;/b&gt;2006-2-25 10:29&lt;br&gt;&lt;br&gt;那我就不知道了，我用的是weblogic服务器，就是严格按照上面所说的步骤执行（少任何一个环节都不行）才能成功解决乱码问题的。&lt;br&gt;
&lt;br&gt;
无能为力了。同情。。。这个问题确实很头疼，当时折腾了我一个多星期呢。&lt;br&gt;
祝福你早日解决乱码问题！&lt;hr color="#808080" size=2 width="100%"&gt;
&lt;b&gt;作者: &lt;/b&gt;softiger     &lt;b&gt;时间: &lt;/b&gt;2006-2-27 09:53&lt;br&gt;&lt;br&gt;也是web服务器乱码问题，百思不解，请高人指教，多谢啦1&lt;br&gt;
Resin3.08在Linux As 3中一直运行正常，最近出现一个非常奇怪的问题，请各位朋友指点？&lt;br&gt;
&lt;br&gt;
jsp从数据库取得记录后生成静态文件，如果Resin服务器启动时间不长，则生成文件没有乱码出现，一切正常；Resin跑一段时间后，生成的文件就出现了乱码，Resin重新启动后，重新生成文件又是正常的。&lt;br&gt;
&lt;br&gt;
可以确定，java编码是正常的，为什么会跑一段时间后才出现乱码问题呢？查看日志也发现不了什么异常。&lt;hr color="#808080" size=2 width="100%"&gt;
&lt;b&gt;作者: &lt;/b&gt;sipcom     &lt;b&gt;时间: &lt;/b&gt;2006-3-1 15:49     &lt;b&gt;标题: &lt;/b&gt;请求高手解决！！！！！&lt;br&gt;&lt;br&gt;我想把问题再清楚描述下：&lt;br&gt;
我写了cgi动态页面，文件名test.pl&lt;br&gt;
我用$perl test.pl&lt;br&gt;
执行结果显示查询oracle数据库中文显示，但通过web方式&lt;a href="http://xxxxxx/cgi-bin/test.pl"&gt;http://xxxxxx/cgi-bin/test.pl&lt;/a&gt;下却显示数据库中的中文记录为？？？，静态页面中文显示正常，why？&lt;hr color="#808080" size=2 width="100%"&gt;
&lt;b&gt;作者: &lt;/b&gt;sipcom     &lt;b&gt;时间: &lt;/b&gt;2006-3-2 16:18&lt;br&gt;&lt;br&gt;经过下午的摸索，问题终于解决了&lt;br&gt;
&lt;br&gt;
在httpd.conf文件中增加了一下1行&lt;br&gt;
    AddCharset    GB2312       .zhs16gbk&lt;br&gt;
（.zhs16gbk跟用户环境下的nls_lang是一样的值）&lt;hr color="#808080" size=2 width="100%"&gt;
&lt;b&gt;作者: &lt;/b&gt;y_yuan     &lt;b&gt;时间: &lt;/b&gt;2006-3-12 10:08     &lt;b&gt;标题: &lt;/b&gt;apache+oracle+php中文乱码问题&lt;br&gt;&lt;br&gt;是
在linux 9.0下，用apache+oracle+php的web服务器的，结果中文显示出乱码，按照你们的方法修改过apache
中的配置文件httpd.conf，还有php.ini 将其注释掉了，oracle
中数据库里显示的中文正常（这个问题也花了很久的时间才解决！），但是网页里的浏览时中文仍然不能正常显示，请各位大侠帮帮忙？最好步骤说详细一点，谢
谢！！&lt;hr color="#808080" size=2 width="100%"&gt;
&lt;b&gt;作者: &lt;/b&gt;y_yuan     &lt;b&gt;时间: &lt;/b&gt;2006-3-12 10:19&lt;br&gt;&lt;br&gt;“PHP中文乱码好像可以用:&lt;br&gt;
ini_set('default_charset','gb2312');&lt;br&gt;
来解决”&lt;br&gt;
&lt;br&gt;
请问这句话加在什么地方？能说详细点吗？谢谢！&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;hr color="#698cc3" size=2 width="100%"&gt;
&lt;table style="font-size:12px;font-family:song,Verdana" align=center border=0 cellpadding=0 cellspacing=0 width="95%"&gt;
&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;http://bbs.chinaunix.net/
&lt;/tbody&gt;&lt;/table&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=-8913911617972053559&amp;page=RSS%3a+%e8%a7%a3%e5%86%b3web%e6%9c%8d%e5%8a%a1%e5%99%a8%e5%90%84%e7%a7%8d%e5%ba%94%e7%94%a8%e7%9a%84%e4%b9%b1%e7%a0%81%e9%97%ae%e9%a2%98&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=miaomin.spaces.live.com&amp;amp;GT1=miaomin"&gt;</description><comments>http://miaomin.spaces.live.com/Blog/cns!844B6C9C838C59C9!326.entry#comment</comments><guid isPermaLink="true">http://miaomin.spaces.live.com/Blog/cns!844B6C9C838C59C9!326.entry</guid><pubDate>Fri, 07 Jul 2006 08:31:02 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://miaomin.spaces.live.com/blog/cns!844B6C9C838C59C9!326/comments/feed.rss</wfw:commentRss><wfw:comment>http://miaomin.spaces.live.com/Blog/cns!844B6C9C838C59C9!326.entry#comment</wfw:comment><dcterms:modified>2006-07-07T08:37:26Z</dcterms:modified></item><item><title>阿拉伯數字轉為大寫國字</title><link>http://miaomin.spaces.live.com/Blog/cns!844B6C9C838C59C9!321.entry</link><description>&lt;p&gt;正好前陣子有需要，從螢火飛的 &lt;a href="http://phorum.study-area.org/viewtopic.php?p=79186"&gt;VB 版本&lt;/a&gt;移植到 PHP 上。

function getChineseNumber($money){&lt;br&gt;
    &lt;br&gt;
    $ar = array(&amp;quot;零&amp;quot;, &amp;quot;壹&amp;quot;, &amp;quot;貳&amp;quot;, &amp;quot;參&amp;quot;, &amp;quot;肆&amp;quot;, &amp;quot;伍&amp;quot;, &amp;quot;陸&amp;quot;, &amp;quot;柒&amp;quot;, &amp;quot;捌&amp;quot;, &amp;quot;玖&amp;quot;) ;&lt;br&gt;
    $cName = array(&amp;quot;&amp;quot;, &amp;quot;&amp;quot;, &amp;quot;拾&amp;quot;, &amp;quot;佰&amp;quot;, &amp;quot;仟&amp;quot;, &amp;quot;萬&amp;quot;, &amp;quot;拾&amp;quot;, &amp;quot;佰&amp;quot;, &amp;quot;仟&amp;quot;, &amp;quot;億&amp;quot;, &amp;quot;拾&amp;quot;, &amp;quot;佰&amp;quot;, &amp;quot;仟&amp;quot;);&lt;br&gt;
    $conver = &amp;quot;&amp;quot;; &lt;br&gt;
    $cLast = &amp;quot;&amp;quot; ;&lt;br&gt;
    $cZero = 0;&lt;br&gt;
    $i = 0;&lt;br&gt;
    for ($j = strlen($money) ; $j &amp;gt;=1 ; $j--){  &lt;br&gt;
      $cNum = intval(substr($money, $i, 1)); &lt;br&gt;
      $cunit = $cName[$j]; //取出位數 &lt;br&gt;
      if ($cNum == 0) { //判斷取出的數字是否為0,如果是0,則記錄共有幾0 &lt;br&gt;
         $cZero++;&lt;br&gt;
         if (strpos($cunit,&amp;quot;萬億&amp;quot;) &amp;gt;0 &amp;amp;&amp;amp; ($cLast == &amp;quot;&amp;quot;)){ // '如果取出的是萬,億,則位數以萬億來補 &lt;br&gt;
          $cLast = $cunit ;&lt;br&gt;
         }       &lt;br&gt;
      }else {&lt;br&gt;
        if ($cZero &amp;gt; 0) {// '如果取出的數字0有n個,則以零代替所有的0 &lt;br&gt;
          if (strpos(&amp;quot;萬億&amp;quot;, substr($conver, strlen($conver)-2)) &amp;gt;0) {&lt;br&gt;
             $conver .= $cLast; //'如果最後一位不是億,萬,則最後一位補上&amp;quot;億萬&amp;quot; &lt;br&gt;
          }&lt;br&gt;
          $conver .=  &amp;quot;零&amp;quot; ;&lt;br&gt;
          $cZero = 0; &lt;br&gt;
          $cLast = &amp;quot;&amp;quot; ;&lt;br&gt;
        }&lt;br&gt;
         $conver = $conver.$ar[$cNum].$cunit; // '如果取出的數字沒有0,則是中文數字+單位           &lt;br&gt;
      }&lt;br&gt;
      $i++;&lt;br&gt;
    }  &lt;br&gt;
  //'判斷數字的最後一位是否為0,如果最後一位為0,則把萬億補上 &lt;br&gt;
     if (strpos(&amp;quot;萬億&amp;quot;, substr($conver, strlen($conver)-2)) &amp;gt;0) { &lt;br&gt;
       $conver .=$cLast; // '如果最後一位不是億,萬,則最後一位補上&amp;quot;億萬&amp;quot; &lt;br&gt;
    }&lt;br&gt;
    return $conver;&lt;br&gt;
  }&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=-8913911617972053559&amp;page=RSS%3a+%e9%98%bf%e6%8b%89%e4%bc%af%e6%95%b8%e5%ad%97%e8%bd%89%e7%82%ba%e5%a4%a7%e5%af%ab%e5%9c%8b%e5%ad%97&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=miaomin.spaces.live.com&amp;amp;GT1=miaomin"&gt;</description><comments>http://miaomin.spaces.live.com/Blog/cns!844B6C9C838C59C9!321.entry#comment</comments><guid isPermaLink="true">http://miaomin.spaces.live.com/Blog/cns!844B6C9C838C59C9!321.entry</guid><pubDate>Mon, 05 Jun 2006 08:02:08 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://miaomin.spaces.live.com/blog/cns!844B6C9C838C59C9!321/comments/feed.rss</wfw:commentRss><wfw:comment>http://miaomin.spaces.live.com/Blog/cns!844B6C9C838C59C9!321.entry#comment</wfw:comment><dcterms:modified>2006-06-05T08:02:08Z</dcterms:modified></item><item><title>实例学正则表达式之三 －－ 如何获取URL的中参数值</title><link>http://miaomin.spaces.live.com/Blog/cns!844B6C9C838C59C9!288.entry</link><description>function getUrlParam(name){&lt;br&gt;    var reg = new RegExp(&amp;quot;(^|&amp;amp;)&amp;quot;+ name +&amp;quot;=([^&amp;amp;]*)(&amp;amp;|$)&amp;quot;);&lt;br&gt;    var r = window.location.search.substr(1).match(reg);&lt;br&gt;    if (r!=null) {&lt;br&gt;     return unescape(r[2]); &lt;br&gt;    }&lt;br&gt; return null;&lt;br&gt;  }&lt;br&gt;  &lt;br&gt;alert(getUrlParam(&amp;quot;Id&amp;quot;));&lt;br&gt;&lt;br&gt;&lt;br&gt;如当前的URL是&lt;a href="http://localhost/test/Untitled-11.html?Id=12456"&gt;http://localhost/test/Untitled-11.html?Id=12456&lt;/a&gt;，那么函数返回12456, &lt;p&gt;正则表达式&amp;quot;(^|&amp;amp;)&amp;quot;+ name +&amp;quot;=([^&amp;amp;]*)(&amp;amp;|$)&amp;quot;是这个函数的关键&lt;p&gt;函数的返回值r[2]，代表了正则表达式中的第二个匹配 ([^&amp;amp;]*)。  为什么&amp;quot;([^&amp;amp;]*)&amp;quot;能匹配12456 呢？&lt;p&gt;根据正则表达式的语法，[^xyz] 负值字符集合。匹配未包含的任意字符。 例如， '[^abc]' 可以匹配 &amp;quot;plain&amp;quot; 中的'p'。 &amp;quot;[^&amp;amp;]*&amp;quot;就是零个或多个除&amp;quot;&amp;amp;&amp;quot;之外任意字符。&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=-8913911617972053559&amp;page=RSS%3a+%e5%ae%9e%e4%be%8b%e5%ad%a6%e6%ad%a3%e5%88%99%e8%a1%a8%e8%be%be%e5%bc%8f%e4%b9%8b%e4%b8%89+%ef%bc%8d%ef%bc%8d+%e5%a6%82%e4%bd%95%e8%8e%b7%e5%8f%96URL%e7%9a%84%e4%b8%ad%e5%8f%82%e6%95%b0%e5%80%bc&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=miaomin.spaces.live.com&amp;amp;GT1=miaomin"&gt;</description><comments>http://miaomin.spaces.live.com/Blog/cns!844B6C9C838C59C9!288.entry#comment</comments><guid isPermaLink="true">http://miaomin.spaces.live.com/Blog/cns!844B6C9C838C59C9!288.entry</guid><pubDate>Mon, 03 Apr 2006 03:11:53 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://miaomin.spaces.live.com/blog/cns!844B6C9C838C59C9!288/comments/feed.rss</wfw:commentRss><wfw:comment>http://miaomin.spaces.live.com/Blog/cns!844B6C9C838C59C9!288.entry#comment</wfw:comment><dcterms:modified>2006-04-03T03:11:53Z</dcterms:modified></item><item><title>超强效率截取函数(zz phpx)</title><link>http://miaomin.spaces.live.com/Blog/cns!844B6C9C838C59C9!274.entry</link><description>&amp;lt;?php&lt;br&gt;&lt;br&gt;ob_start();&lt;br&gt;&lt;br&gt;$text .=
&amp;quot;　　“不――――”霍恩斯在几步外眼看着岩浆悄无声息地把火岩推走，黄色的瞳仁瞬间冲满了血块。在小矮人的经历中，沙若、大青山、艾米、林雨裳是他最开
始接触到的人类。在矮人的社会中，对于人类整体水平的评价并不高，甚至不能用毁誉参半这样的中性词来形容，在矮人一些长辈嘴里，矮人和人类打交道，必须打
起十二万分的小心，“诚信”这样的词对于大部分人类都是太高的要求，如果一个人类可以不做出违背良心的事情，这已经算是尽善尽美了。让霍恩斯震惊的是，四
个人类少年让他看到了矮人特有的忠诚、友善、平和、善良等优秀品质，就以四个少年的平均水平而言，他们已经超过了矮人王国最古老的家族。结识不过数年，霍
恩斯对于几个人却象终身老友。在小矮人的心中，小佣兵团就是自己在人类社会的家，而这四个少年就是自己血脉最密的兄长姊妹。小矮人疯狂地挣开了火炉和另外
两个矮人骑士的手，象一只迅猛的豹子一样在熔岩上空高高跃起，右脚在火岩上用力一踩，火岩被踩得咚咚全部没入岩浆，霍恩斯的身体再次腾空而起……突然，一
根细长的红色光影象一道长虹从后面重重撞来，凌空的霍恩斯根本没有防备，身体象弹射而出的石子，咚的一声重重撞向了岩石……就在这一瞬间，以沙若娇弱身躯
为中心，在一声娇呼声中，无边无沿的地穴中突然爆发出一阵刺眼的红光，伴随着红光是一连串从粘稠熔岩中传出来的低沉鸣叫声――死水一样流动而过的熔岩似乎
为收下这最为珍贵的祭品而欢呼。霍恩斯身体已经落在了岩石上，刚想再次跃起，立刻发现一道红色的丝带狠狠地缠在自己的身上，高挑的肩甲呻吟了一声被红色丝
带勒成碎片，丝带狠狠勒在矮人高高凸起的臂肌上，鲜血顺着手臂流淌出来：“放开我，放开我！沙若！沙若，回答我！回答我啊！”小矮人愤怒地咆哮着，疯狂地
挣扎着，声音几近声嘶力竭。“是熔岩虫，快割断它！”矮人骑士中立刻有人认出这条红色带子，在传说中，这种熔岩虫一般是成对生活，其中一只死去，另外一只
成虫多半也会郁郁寡欢很快死去，没有想到这只熔岩虫竟然选择了报复，而且，显然这种诡异的生物竟然有了不起的智慧，在刚才的一路上，霍恩斯丝毫没有任何破
绽，那只熔岩虫一定对他背后的战斧存在的恐惧心理，直到刚才的一刻，霍恩斯身边没有任何人，而脚下就是熔岩，致命的战斧又挂在背后，也直到这一刻，熔岩虫
才暴起袭击，并选择了同归于尽。“滚蛋！你可恶的虫子。”霍恩斯疯狂地伸手去摘战斧，矮人手臂粗短，熔岩虫又紧紧扣在手臂上，根本够不到斧子。熔岩虫是世
界上最有韧性和弹性的动物，看似纤细的虫体拥有可怕的破坏性，红色虫体紧紧收缩中，轻微的爆响连成了一片，霍恩斯身上结实的矮人出品的铠甲一片片被勒断，
细小的钢丝圈、轻薄的钢片、柔韧的钢龙骨一件一件的变形、弹出，矮人粗壮结实的手臂上爆起的静脉被勒断了，血水汩汩的流出……火炉和几个伙伴着急得要抓
狂，刚才几块小火岩被霍恩斯一脚踩下去，不知道沉到哪里去了，更不知道何时才会浮起来……小矮人眼睛里露出暴怒色，猛得全身用力向熔岩滚去――岩石距离熔
岩，不过仅仅数步之遥，最下面的岩石已经滚烫，熔岩顺着岩石向上侵吞着，小矮人裹着熔岩虫瞬间来到岩石边上，矮人棕色的胡须嘭得被滚滚热浪凌空炙烤成灰
烬，就在这一刻，熔岩虫本能地对这自然界唯一的生死大敌感到了惊恐，下意识地稍微一松动，霍恩斯立刻把握住了这一瞬间，双臂猛得上抬去摘战斧，用脚撑住了
下滑的趋势，熔岩虫当即知道自己上了当，准备殉情的虫子也确实有以死明志的念头，不顾近在咫尺的熔岩，接着狠狠勒了进来。霍恩斯刚刚抬起的手臂立刻又被死
死地绑住，手臂部位已经略微向上，小矮人全力低下头，狠狠咬住了熔岩虫，一股巨热火辣辣的刺激着小矮人的嘴、舌头、牙齿，熔岩虫吃痛，再次猛收力量，霍恩
斯嘴唇顿时也被勒出了血，两排锐利的钢牙开始奋力锉动，熔岩虫细长的皮肤立刻被磨开，红色的血液流入霍恩斯嘴里，炙热的细流顺着嘴、食管一直流淌到胃里，
火辣辣地煎熬着……火炉等矮人骑士在十多米外都可以听到霍恩斯牙齿咬锉间发出的嘎吱嘎吱声，看着小矮人全身青色血管被挤压得暴起，接着一点点暴开，鲜血喷
洒而出……嘣……一声沉闷的响声在整个地穴中回荡，熔岩虫象两道红色闪电一样向外射去，紧接着紧紧的缩成一团，烂泥一样在地上翻滚着最终落入了熔岩中，一
股淡淡的臭味从熔岩中升起。霍恩斯怒号了一声，爬滚着扑到了岩石边，从背后摘下了车轮大斧，调转斧攥在熔岩中搅动着，嘴里下意识的喊着：“沙若……沙
若……快回答我！快回答我呀！”刚才吞没沙若的地方，就像什么也没有发生过，只有暗红色的熔岩，无声得，一点点流淌而过……滚滚熔岩中，空无一物……不知
不觉中，泪水顺着矮人脸颊滚滚而下，很快和脸上的伤口融合在一起，泪水、血水一点一滴地挂满了小矮人被烧焦一半的胡须。很多时候，只有失去了，才知道一个
朋友真正的宝贵之处……沙若，一个不论是人前还是人后，都极为不喜欢说话的女孩。从认识霍恩斯的一天起，最多的表情只是抿着嘴浅浅的笑。在性格方面，她和
木纳但颇有长兄之风的大青山几乎同出一辙，在任何时候，不会在人前与任何人产生那怕一丁点冲突，即使被人用调侃的语调嘲笑了，也多是微微一笑，绝对不用担
心这两个人会在心底记得一点点仇恨。这两个人的心简直就是用金子做的！洁净，善良，容不得一丝污垢。&amp;quot;;&lt;br&gt;$text .= &amp;quot;&amp;lt;br /&amp;gt;&amp;quot;;&lt;br&gt;&lt;br&gt;/**&lt;br&gt; * 4000个字符即2000汉字的测试数据&lt;br&gt; * 长度：4266&lt;br&gt; * 时间：0.00074&lt;br&gt; *&lt;br&gt; * 100W个字符即50W汉字的测试数据&lt;br&gt; * 长度：1126224&lt;br&gt; * 时间：0.8296&lt;br&gt; */&lt;br&gt;echo '长度：'.strlen($text).&amp;quot;&amp;lt;br /&amp;gt;\n&amp;quot;;&lt;br&gt;startTimer();&lt;br&gt;$text = String::wordWrapWithChr($text, 121, &amp;quot;&amp;lt;br /&amp;gt;\n&amp;quot;);&lt;br&gt;echo '时间：'.endTimer().&amp;quot;&amp;lt;br /&amp;gt;\n&amp;quot;;&lt;br&gt;echo &amp;quot;&amp;lt;br /&amp;gt;\n{$text}&amp;quot;;&lt;br&gt;&lt;br&gt;/**&lt;br&gt; * 中文字符串函数库&lt;br&gt; * 封装各种中文字符操作函数 (Mon Aug 01 11:08:48 CST 2005)&lt;br&gt; * @version        1.0.0&lt;br&gt; * @author        StarSoul&lt;br&gt; */&lt;br&gt;class String&lt;br&gt;{&lt;br&gt; /**&lt;br&gt; * subStrWithSuffix&lt;br&gt; * 中文字符截取 (Mon Aug 01 11:13:34 CST 2005)&lt;br&gt; * @version        1.0.0&lt;br&gt; * @author        &lt;br&gt; * @deprecated    解决中文截取出现乱码&lt;br&gt; * @return        string&lt;br&gt; */&lt;br&gt; function subStrWithChr ($string, $length, $start = 0)&lt;br&gt; {&lt;br&gt; if ($start &amp;lt; 0 || ($stringLength = strlen($string)) &amp;lt; $start) return $string;&lt;br&gt; $length = (($length &amp;lt; 1 || $length &amp;gt; $stringLength)?$stringLength:$length);&lt;br&gt; for
($i = 1, $o = ($start % 2)?2:1; ($start &amp;gt; 0 &amp;amp;&amp;amp; $i &amp;lt; $o
&amp;amp;&amp;amp; ord(substr($string, $start , 1)) &amp;gt; 0xa0); $i ++) $start
--;&lt;br&gt; for ($i = 1, $o = ($length % 2)?2:1; ($stringLength &amp;gt;
$length &amp;amp;&amp;amp; $i &amp;lt; $o &amp;amp;&amp;amp; ord(substr($string, $length -
1 , $length)) &amp;gt; 0xa0); $i ++) $length ++;&lt;br&gt; $string = substr($string, $start, $length);&lt;br&gt; return $string;&lt;br&gt; }&lt;br&gt;&lt;br&gt; /**&lt;br&gt; * wordWrapWithChr&lt;br&gt; * 字符截行 (Mon Aug 01 14:15:37 CST 2005)&lt;br&gt; * @version        1.0.0&lt;br&gt; * @author        &lt;br&gt; * @deprecated    解决中文截取出现乱码&lt;br&gt; * @return        string&lt;br&gt; */&lt;br&gt; function wordWrapWithChr ($string, $width, $break = null)&lt;br&gt; {&lt;br&gt; /**&lt;br&gt; * 中文标点符号怎么处理?暂时没有比较好的解决方案&lt;br&gt; * ，。？：；’‘“”、（）*……—…%￥€＄￡·！&lt;br&gt; */&lt;br&gt; for
($break = $break?$break:&amp;quot;\n&amp;quot;, $line = 0, $text = array(), $handle = 0,
$length = strlen($string); $handle &amp;lt; $length; $handle +=
strlen($text[$line ++]))&lt;br&gt; $text[$line] = String::subStrWithChr($string, $width, $handle);&lt;br&gt; return implode($break, $text);/*  */&lt;br&gt; }&lt;br&gt;}&lt;br&gt;function startTimer()&lt;br&gt;{&lt;br&gt; global $starttime;&lt;br&gt; $mtime = microtime ();&lt;br&gt; $mtime = explode (' ', $mtime);&lt;br&gt; $mtime = $mtime[1] + $mtime[0];&lt;br&gt; $starttime = $mtime;&lt;br&gt;}&lt;br&gt;function endTimer()&lt;br&gt;{&lt;br&gt; global $starttime;&lt;br&gt; $mtime = microtime ();&lt;br&gt; $mtime = explode (' ', $mtime);&lt;br&gt; $mtime = $mtime[1] + $mtime[0];&lt;br&gt; $endtime = $mtime;&lt;br&gt; $totaltime = round (($endtime - $starttime), 5);&lt;br&gt; return $totaltime;&lt;br&gt;}&lt;br&gt;?&amp;gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=-8913911617972053559&amp;page=RSS%3a+%e8%b6%85%e5%bc%ba%e6%95%88%e7%8e%87%e6%88%aa%e5%8f%96%e5%87%bd%e6%95%b0(zz+phpx)&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=miaomin.spaces.live.com&amp;amp;GT1=miaomin"&gt;</description><comments>http://miaomin.spaces.live.com/Blog/cns!844B6C9C838C59C9!274.entry#comment</comments><guid isPermaLink="true">http://miaomin.spaces.live.com/Blog/cns!844B6C9C838C59C9!274.entry</guid><pubDate>Thu, 30 Mar 2006 03:32:55 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://miaomin.spaces.live.com/blog/cns!844B6C9C838C59C9!274/comments/feed.rss</wfw:commentRss><wfw:comment>http://miaomin.spaces.live.com/Blog/cns!844B6C9C838C59C9!274.entry#comment</wfw:comment><dcterms:modified>2006-03-30T03:32:55Z</dcterms:modified></item><item><title>[PHP] PHP正则基本语法</title><link>http://miaomin.spaces.live.com/Blog/cns!844B6C9C838C59C9!178.entry</link><description>&lt;div&gt;
&lt;p&gt;&lt;font size=3&gt;现在,来量化一些字符序列/小字符串,把他们放入圆括号里: &lt;br&gt;还有'|'字符,作用如同OR,用来选择: &lt;br&gt;方括号明确指出哪些字符可以出现在某个单个字符的位置: &lt;br&gt;&amp;quot;[ab]&amp;quot;: 对应一个有一个 a 或者一个 b (等同于&amp;quot;a|b&amp;quot;); &lt;br&gt;你可以使用一个列表剔除你不想要的字符--只要使用一个'^'在你的方括号里的第一个位置 (例如, &amp;quot;%[^a-zA-Z]%&amp;quot; 表示在两个百分号之间的一个字符不是英文字母).另外,你必须注意,某些时候,你不必多加一个反斜杠表示特殊字符失效,比如在字符类的第一个位置时.看例子:&amp;quot;($|￥)[0-9]+&amp;quot;的含义可以表示成ereg(&amp;quot;(\$|￥)[0-9]+&amp;quot;, $str) (这匹配的是什么字符串?) &lt;/font&gt;
&lt;p&gt;&lt;font size=3&gt;&lt;/font&gt;
&lt;p&gt;&lt;br&gt;&lt;font size=3&gt;首先，让我们看看两个特别的字符：’^’ 和 ‘$’ 他们是分别用来匹配字符串的开始和结束，一下分别举例说明 &lt;/font&gt;
&lt;p&gt;&lt;br&gt;&lt;font size=3&gt;&amp;quot;^The&amp;quot;: 匹配以 &amp;quot;The&amp;quot;开头的字符串; &lt;br&gt;&amp;quot;of despair$&amp;quot;: 匹配以 &amp;quot;of despair&amp;quot; 结尾的字符串; &lt;br&gt;&amp;quot;^abc$&amp;quot;: 匹配以abc开头和以abc结尾的字符串，实际上是只有abc与之匹配 &lt;br&gt;&amp;quot;notice&amp;quot;: 匹配包含notice的字符串 &lt;/font&gt;
&lt;p&gt;&lt;br&gt;&lt;font size=3&gt;你可以看见如果你没有用我们提到的两个字符（最后一个例子），就是说 模式（正则表达式） 可以出现在被检验字符串的任何地方，你没有把他锁定到两边 &lt;br&gt;这里还有几个字符 '*', '+',和 '?', 他们用来表示一个字符可以出现的次数或者顺序. 他们分别表示：&amp;quot;zero or more&amp;quot;, &amp;quot;one or more&amp;quot;, and &amp;quot;zero or one.&amp;quot; 这里是一些例子: &lt;/font&gt;
&lt;p&gt;&lt;br&gt;&lt;font size=3&gt;&amp;quot;ab*&amp;quot;: 匹配字符串a和0个或者更多b组成的字符串(&amp;quot;a&amp;quot;, &amp;quot;ab&amp;quot;, &amp;quot;abbb&amp;quot;, etc.); &lt;br&gt;&amp;quot;ab+&amp;quot;: 和上面一样，但最少有一个b (&amp;quot;ab&amp;quot;, &amp;quot;abbb&amp;quot;, etc.); &lt;br&gt;&amp;quot;ab?&amp;quot;:匹配0个或者一个b; &lt;br&gt;&amp;quot;a?b+$&amp;quot;: 匹配以一个或者0个a再加上一个以上的b结尾的字符串. &lt;/font&gt;
&lt;p&gt;&lt;br&gt;&lt;font size=3&gt;你也可以在大括号里面限制字符出现的个数，比如 &lt;/font&gt;
&lt;p&gt;&lt;br&gt;&lt;font size=3&gt;&amp;quot;ab{2}&amp;quot;: 匹配一个a后面跟两个b（一个也不能少）(&amp;quot;abb&amp;quot;); &lt;br&gt;&amp;quot;ab{2,}&amp;quot;: 最少更两个b(&amp;quot;abb&amp;quot;, &amp;quot;abbbb&amp;quot;, etc.); &lt;br&gt;&amp;quot;ab{3,5}&amp;quot;: 2－5个b(&amp;quot;abbb&amp;quot;, &amp;quot;abbbb&amp;quot;, or &amp;quot;abbbbb&amp;quot;). &lt;/font&gt;
&lt;p&gt;&lt;font size=3&gt;&lt;/font&gt;
&lt;p&gt;&lt;font size=3&gt;你还要注意到你必须总是指定 (i.e, &amp;quot;{0,2}&amp;quot;, not &amp;quot;{,2}&amp;quot;).同样，你必须注意到, '*', '+', 和'?' 分别和一下三个范围标注是一样的，&amp;quot;{0,}&amp;quot;, &amp;quot;{1,}&amp;quot;, 和 &amp;quot;{0,1}&amp;quot;。 &lt;/font&gt;
&lt;p&gt;&lt;font size=3&gt;现在把一定数量的字符放到小括号里，比如： &lt;/font&gt;
&lt;p&gt;&lt;br&gt;&lt;font size=3&gt;&amp;quot;a(bc)*&amp;quot;: 匹配 a 后面跟0个或者一个&amp;quot;bc&amp;quot;; &lt;br&gt;&amp;quot;a(bc){1,5}&amp;quot;: 一个到5个 &amp;quot;bc.&amp;quot; &lt;/font&gt;
&lt;p&gt;&lt;br&gt;&lt;font size=3&gt;还有一个字符 '│', 相当于OR 操作: &lt;/font&gt;
&lt;p&gt;&lt;br&gt;&lt;font size=3&gt;&amp;quot;hi│hello&amp;quot;: 匹配含有&amp;quot;hi&amp;quot; 或者 &amp;quot;hello&amp;quot; 的 字符串; &lt;br&gt;&amp;quot;(b│cd)ef&amp;quot;: 匹配含有 &amp;quot;bef&amp;quot; 或者 &amp;quot;cdef&amp;quot;的字符串; &lt;br&gt;&amp;quot;(a│b)*c&amp;quot;: 匹配含有这样 - 多个（包括0个）a或b，后面跟一个c &lt;br&gt;的字符串 的字符串; &lt;/font&gt;
&lt;p&gt;&lt;br&gt;&lt;font size=3&gt;一个点('.')可以代表所有的 单一字符: &lt;/font&gt;
&lt;p&gt;&lt;br&gt;&lt;font size=3&gt;&amp;quot;a.[0-9]&amp;quot;: 一个a跟一个字符再跟一个数字的 （含有这样一个字符串的字符串将被匹配，以后省略此括号） &lt;br&gt;&amp;quot;^.{3}$&amp;quot;: 以三个字符结尾 . &lt;/font&gt;
&lt;p&gt;&lt;br&gt;&lt;font size=3&gt;中括号括住的内容只匹配一个 单一的字符 &lt;/font&gt;
&lt;p&gt;&lt;br&gt;&lt;font size=3&gt;&amp;quot;[ab]&amp;quot;: 匹配单个的 a 或者 b ( 和 &amp;quot;a│b&amp;quot; 一样); &lt;br&gt;&amp;quot;[a-d]&amp;quot;: 匹配'a' 到'd'的单个字符 (和&amp;quot;a│b│c│d&amp;quot; 还有 &amp;quot;[abcd]&amp;quot;效果一样); &lt;br&gt;&amp;quot;^[a-zA-Z]&amp;quot;: 匹配以字母开头的字符串 &lt;br&gt;&amp;quot;[0-9]%&amp;quot;: 匹配含有 形如 x％ 的字符串 &lt;br&gt;&amp;quot;,[a-zA-Z0-9]$&amp;quot;: 匹配以逗号在加一个数字或字母结尾的字符串 &lt;/font&gt;
&lt;p&gt;&lt;br&gt;&lt;font size=3&gt;你也可以把你不想要得字符列在中括号里，你只需要在总括号里面使用'^' 作为开头 (i.e., &amp;quot;%[^a-zA-Z]%&amp;quot; 匹配含有 两个百分号里面有一个非字母 的字符串). &lt;/font&gt;
&lt;p&gt;&lt;font size=3&gt;为了能够解释，但&amp;quot;^.[$()│*+?{\&amp;quot;作为有特殊意义的字符的时候，你必须在这些字符面前加'', 还有在php3中你应该避免在模式的最前面使用\, 比如说,正则表达式 &amp;quot;(\$│?[0-9]+&amp;quot; 应该这样调用 ereg(&amp;quot;(&lt;/font&gt;&lt;a&gt;&lt;u&gt;&lt;font color="#0000ff" size=3&gt;\\$│?[0-9&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;&lt;font size=3&gt;]+&amp;quot;, $str) (不知道php4是不是一样) &lt;/font&gt;
&lt;p&gt;&lt;font size=3&gt;不要忘记在中括号里面的字符是这条规路的例外—在中括号里面, 所有的特殊字符，包括(''), 都将失去他们的特殊性质(i.e., &amp;quot;[*\+?{}.]&amp;quot;匹配含有这些字符的字符串). 还有,正如regx的手册告诉我们: &amp;quot;如果列表里含有 ']', 最好把它作为列表里的第一个字符(可能跟在'^'后面). 如果含有'-', 最好把它放在最前面或者最后面, or 或者一个范围的第二个结束点(i.e. [a-d-0-9]中间的‘-’将有效. &lt;/font&gt;
&lt;p&gt;&lt;font size=3&gt;为了完整, 我应该涉及到 collating sequences, character classes, 同埋 equivalence classes. 但我在这些方面不想讲的太详细, 这些在下面的文章仲都不需要涉及到. 你们可以在regex man pages 那里得到更多消息. &lt;/font&gt;
&lt;p&gt;&lt;font size=3&gt;如何构建一个模式来匹配 货币数量 的输入 &lt;/font&gt;
&lt;p&gt;&lt;font size=3&gt;好了，现在我们要用我们所学的来干一些有用的事：构建一个匹配模式去检查输入的信息是否为一个表示money的数字。我们认为一个表示money的数量有四种方式： &amp;quot;10000.00&amp;quot; 和 &amp;quot;10,000.00&amp;quot;,或者没有小数部分, &amp;quot;10000&amp;quot; and &amp;quot;10,000&amp;quot;. 现在让我们开始构建这个匹配模式: &lt;/font&gt;
&lt;p&gt;&lt;font size=3&gt;^[1-9][0-9]*$ &lt;/font&gt;
&lt;p&gt;&lt;font size=3&gt;这是所变量必须以非0的数字开头.但这也意味着 单一的 &amp;quot;0&amp;quot; 也不能通过测试. 以下是解决的方法: &lt;/font&gt;
&lt;p&gt;&lt;font size=3&gt;^(0│[1-9][0-9]*)$ &lt;/font&gt;
&lt;p&gt;&lt;font size=3&gt;&amp;quot;只有0和不以0开头的数字与之匹配&amp;quot;，我们也可以允许一个负号再数字之前: &lt;/font&gt;
&lt;p&gt;&lt;font size=3&gt;^(0│-?[1-9][0-9]*)$ &lt;/font&gt;
&lt;p&gt;&lt;font size=3&gt;这就是: &amp;quot;0 或者 一个以0开头可能有一个负号在前面的数字.&amp;quot; 好了, 好了现在让我们别那么严谨，允许以0开头.现在让我们放弃 负号 , 因为我们在表示钱币的时候并不需要用到. 我们现在指定 模式 用来匹配小数部分: &lt;/font&gt;
&lt;p&gt;&lt;font size=3&gt;^[0-9]+(\.[0-9]+)?$ &lt;/font&gt;
&lt;p&gt;&lt;font size=3&gt;这暗示匹配的字符串必须最少以一个阿拉伯数字开头. 但是注意，在上面模式中 &amp;quot;10.&amp;quot; 是不匹配的, 只有 &amp;quot;10&amp;quot; 和 &amp;quot;10.2&amp;quot; 才可以. （你知道为什么吗） &lt;/font&gt;
&lt;p&gt;&lt;font size=3&gt;^[0-9]+(\.[0-9]{2})?$ &lt;/font&gt;
&lt;p&gt;&lt;font size=3&gt;我们上面指定小数点后面必须有两位小数.如果你认为这样太苛刻,你可以改成: &lt;/font&gt;
&lt;p&gt;&lt;font size=3&gt;^[0-9]+(\.[0-9]{1,2})?$ &lt;/font&gt;
&lt;p&gt;&lt;font size=3&gt;这将允许小数点后面有一到两个字符. 现在我们加上用来增加可读性的逗号（每隔三位）, 我们可以这样表示: &lt;/font&gt;
&lt;p&gt;&lt;font size=3&gt;^[0-9]{1,3}(,[0-9]{3})*(\.[0-9]{1,2})?$ &lt;/font&gt;
&lt;p&gt;&lt;font size=3&gt;不要忘记加号 '+' 可以被乘号 '*' 替代如果你想允许空白字符串被输入话 (为什么?). 也不要忘记反斜杆 ’\’ 在php字符串中可能会出现错误 (很普遍的错误). 现在，我们已经可以确认字符串了, 我们现在把所有逗号都去掉 str_replace(&amp;quot;,&amp;quot;, &amp;quot;&amp;quot;, $money) 然后在把类型看成 double然后我们就可以通过他做数学计算了. &lt;br&gt;构造检查email的正则表达式 &lt;/font&gt;
&lt;p&gt;&lt;font size=3&gt;好,让我们继续讨论怎么验证一个email地址. 在一个完整的email地址中有三个部分: POP3 用户名 (在 &lt;/font&gt;&lt;a href="mailto:'@'"&gt;&lt;u&gt;&lt;font color="#0000ff" size=3&gt;'@'&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;&lt;font size=3&gt; 左边的一切), &lt;/font&gt;&lt;a href="mailto:'@'"&gt;&lt;u&gt;&lt;font color="#0000ff" size=3&gt;'@'&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;&lt;font size=3&gt;, 服务器名(就是剩下那部分). 用户名可以含有大小写字母阿拉伯数字,句号 ('.'), 减号('-'), and 下划线 ('_'). 服务器名字也是符合这个规则,当然下划线除外. &lt;/font&gt;
&lt;p&gt;&lt;font size=3&gt;现在, 用户名的开始和结束都不能是句点. 服务器也是这样. 还有你不能有两个连续的句点他们之间至少存在一个字符，好现在我们来看一下怎么为用户名写一个匹配模式: &lt;/font&gt;
&lt;p&gt;&lt;font size=3&gt;^[_a-zA-Z0-9-]+$ &lt;/font&gt;
&lt;p&gt;&lt;font size=3&gt;现在还不能允许句号的存在. 我们把它加上: &lt;/font&gt;
&lt;p&gt;&lt;font size=3&gt;^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*$ &lt;/font&gt;
&lt;p&gt;&lt;font size=3&gt;上面的意思就是说: &amp;quot;以至少一个规范字符（除.意外）开头,后面跟着0个或者多个以点开始的字符串.&amp;quot; &lt;/font&gt;
&lt;p&gt;&lt;font size=3&gt;简单化一点, 我们可以用 eregi()取代 ereg().eregi()对大小写不敏感, 我们就不需要指定两个范围 &amp;quot;a-z&amp;quot; 和 &amp;quot;A-Z&amp;quot; – 只需要指定一个就可以了: &lt;/font&gt;
&lt;p&gt;&lt;font size=3&gt;^[_a-z0-9-]+(\.[_a-z0-9-]+)*$ &lt;/font&gt;
&lt;p&gt;&lt;font size=3&gt;后面的服务器名字也是一样,但要去掉下划线: &lt;/font&gt;
&lt;p&gt;&lt;font size=3&gt;^[a-z0-9-]+(\.[a-z0-9-]+)*$ &lt;/font&gt;
&lt;p&gt;&lt;font size=3&gt;Done. 现在只需要用”@”把两部分连接: &lt;/font&gt;
&lt;p&gt;&lt;font size=3&gt;^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*$ &lt;/font&gt;
&lt;p&gt;&lt;br&gt;&lt;font size=3&gt;这就是完整的email认证匹配模式了,只需要调用 &lt;/font&gt;
&lt;p&gt;&lt;font size=3&gt;eregi(‘^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*$ ’,$eamil) &lt;/font&gt;
&lt;p&gt;&lt;font size=3&gt;就可以得到是否为email了 &lt;br&gt;正则表达式的其他用法 &lt;/font&gt;
&lt;p&gt;&lt;font size=3&gt;提取字符串 &lt;/font&gt;
&lt;p&gt;&lt;font size=3&gt;ereg() and eregi() 有一个特性是允许用户通过正则表达式去提取字符串的一部分(具体用法你可以阅读手册). 比如说,我们想从 path/URL 提取文件名 – 下面的代码就是你需要: &lt;/font&gt;
&lt;p&gt;&lt;font size=3&gt;ereg(&amp;quot;([^\\/]*)$&amp;quot;, $pathOrUrl, $regs); &lt;br&gt;echo $regs[1]; &lt;/font&gt;
&lt;p&gt;&lt;font size=3&gt;高级的代换 &lt;/font&gt;
&lt;p&gt;&lt;font size=3&gt;ereg_replace() 和 eregi_replace()也是非常有用的: 假如我们想把所有的间隔负号都替换成逗号: &lt;/font&gt;
&lt;p&gt;&lt;br&gt;&lt;font size=3&gt;ereg_replace(&amp;quot;[ \n\r\t]+&amp;quot;, &amp;quot;,&amp;quot;, trim($str)); &lt;/font&gt;&lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=-8913911617972053559&amp;page=RSS%3a+%5bPHP%5d+PHP%e6%ad%a3%e5%88%99%e5%9f%ba%e6%9c%ac%e8%af%ad%e6%b3%95&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=miaomin.spaces.live.com&amp;amp;GT1=miaomin"&gt;</description><comments>http://miaomin.spaces.live.com/Blog/cns!844B6C9C838C59C9!178.entry#comment</comments><guid isPermaLink="true">http://miaomin.spaces.live.com/Blog/cns!844B6C9C838C59C9!178.entry</guid><pubDate>Fri, 09 Dec 2005 08:15:37 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://miaomin.spaces.live.com/blog/cns!844B6C9C838C59C9!178/comments/feed.rss</wfw:commentRss><wfw:comment>http://miaomin.spaces.live.com/Blog/cns!844B6C9C838C59C9!178.entry#comment</wfw:comment><dcterms:modified>2005-12-09T08:15:37Z</dcterms:modified></item><item><title>[PHP] PHP 正则表达式资料</title><link>http://miaomin.spaces.live.com/Blog/cns!844B6C9C838C59C9!163.entry</link><description>&lt;div&gt;&lt;font size=3&gt;&lt;/font&gt;&lt;/div&gt;&lt;font size=3&gt;每个PHP程序员都知道PHP有强大的正则表达式功能，为了以后的工作方便，我从网上整理了关于正则表达式的资料，方便以后工作时的进行资料查阅。 &lt;br&gt;&lt;br&gt;&lt;br&gt;　　正则表达式(regular expression)描述了一种字符串匹配的模式，可以用来检查一个串是否含有某种子串、将匹配的子串做替换或者从某个串中取出符合某个条件的子串等。 &lt;br&gt;&lt;br&gt;&lt;br&gt;　　举例来说，正则表达式的一个最为普遍的应用就是用于验证用户在线输入的邮件地址的格式是否正确。如果通过正则表达式验证用户邮件地址的格式正确，用户所填写的表单信息将会被正常处理；反之，如果用户输入的邮件地址与正则表达的模式不匹配，将会弹出提示信息，要求用户重新输入正确的邮件地址。由此可见正则表达式在WEB应用的逻辑判断中具有举足轻重的作用。 &lt;br&gt;&lt;br&gt;&lt;/font&gt;
&lt;h3&gt;&lt;font size=3&gt;正则表达式&lt;/font&gt;&lt;/h3&gt;&lt;br&gt;&lt;font size=3&gt;　　是由普通字符（例如字符 a 到 z）以及特殊字符（称为元字符）组成的文字模式。正则表达式作为一个模板，将某个字符模式与所搜索的字符串进行匹配。&lt;br&gt;&lt;br&gt;　　可以通过在一对分隔符之间放入表达式模式的各种组件来构造一个正则表达式，即/expression/ &lt;br&gt;&lt;/font&gt;
&lt;h3&gt;&lt;font size=3&gt;普通字符&lt;/font&gt;&lt;/h3&gt;&lt;br&gt;&lt;font size=3&gt;　　由所有那些未显式指定为元字符的打印和非打印字符组成。这包括所有的大写和小写字母字符，所有数字，所有标点符号以及一些符号。 &lt;br&gt;&lt;/font&gt;
&lt;h3&gt;&lt;font size=3&gt;非打印字符&lt;/font&gt;&lt;/h3&gt;&lt;br&gt;
&lt;table border=1&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;font size=3&gt;字符 &lt;/font&gt;
&lt;td&gt;&lt;font size=3&gt;含义&lt;/font&gt;
&lt;tr&gt;
&lt;td&gt;&lt;font size=3&gt;\cx &lt;/font&gt;
&lt;td&gt;&lt;font size=3&gt;匹配由x指明的控制字符。例如， \cM 匹配一个 Control-M 或回车符。x 的值必须为 A-Z 或 a-z 之一。否则，将 c 视为一个原义的 'c' 字符。&lt;/font&gt;
&lt;tr&gt;
&lt;td&gt;&lt;font size=3&gt;\f &lt;/font&gt;
&lt;td&gt;&lt;font size=3&gt;匹配一个换页符。等价于 \x0c 和 \cL。&lt;/font&gt;
&lt;tr&gt;
&lt;td&gt;&lt;font size=3&gt;\n &lt;/font&gt;
&lt;td&gt;&lt;font size=3&gt;匹配一个换行符。等价于 \x0a 和 \cJ。&lt;/font&gt;
&lt;tr&gt;
&lt;td&gt;&lt;font size=3&gt;\r &lt;/font&gt;
&lt;td&gt;&lt;font size=3&gt;匹配一个回车符。等价于 \x0d 和 \cM。&lt;/font&gt;
&lt;tr&gt;
&lt;td&gt;&lt;font size=3&gt;\s &lt;/font&gt;
&lt;td&gt;&lt;font size=3&gt;匹配任何空白字符，包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。&lt;/font&gt;
&lt;tr&gt;
&lt;td&gt;&lt;font size=3&gt;\S &lt;/font&gt;
&lt;td&gt;&lt;font size=3&gt;匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。&lt;/font&gt;
&lt;tr&gt;
&lt;td&gt;&lt;font size=3&gt;\t &lt;/font&gt;
&lt;td&gt;&lt;font size=3&gt;匹配一个制表符。等价于 \x09 和 \cI。&lt;/font&gt;
&lt;tr&gt;
&lt;td&gt;&lt;font size=3&gt;\v &lt;/font&gt;
&lt;td&gt;&lt;font size=3&gt;匹配一个垂直制表符。等价于 \x0b 和 \cK。&lt;/font&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br&gt;
&lt;h3&gt;&lt;font size=3&gt;特殊字符&lt;/font&gt;&lt;/h3&gt;&lt;br&gt;&lt;font size=3&gt;　　所谓特殊字符，就是一些有特殊含义的字符，例如&amp;quot;*.txt&amp;quot;中的*，简单的说就是表示任何字符串的意思。如果要查找文件名中有＊的文件，则需要对＊进行转义，即在其前加一个\。ls \*.txt。正则表达式有以下特殊字符。 &lt;br&gt;&lt;/font&gt;
&lt;table border=1&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;font size=3&gt;特别字符&lt;/font&gt;
&lt;td&gt;&lt;font size=3&gt;说明&lt;/font&gt;
&lt;tr&gt;
&lt;td&gt;&lt;font size=3&gt;$&lt;/font&gt;
&lt;td&gt;&lt;font size=3&gt;匹配输入字符串的结尾位置。如果设置了 RegExp 对象的 Multiline 属性，则 $ 也匹配 '\n' 或 '\r'。要匹配 $ 字符本身，请使用 \$。&lt;/font&gt;
&lt;tr&gt;
&lt;td&gt;&lt;font size=3&gt;( )&lt;/font&gt;
&lt;td&gt;&lt;font size=3&gt;标记一个子表达式的开始和结束位置。子表达式可以获取供以后使用。要匹配这些字符，请使用 \( 和 \)。&lt;/font&gt;
&lt;tr&gt;
&lt;td&gt;&lt;font size=3&gt;*&lt;/font&gt;
&lt;td&gt;&lt;font size=3&gt;匹配前面的子表达式零次或多次。要匹配 * 字符，请使用 \*。&lt;/font&gt;
&lt;tr&gt;
&lt;td&gt;&lt;font size=3&gt;+&lt;/font&gt;
&lt;td&gt;&lt;font size=3&gt;匹配前面的子表达式一次或多次。要匹配 + 字符，请使用 \+。&lt;/font&gt;
&lt;tr&gt;
&lt;td&gt;&lt;font size=3&gt;.&lt;/font&gt;
&lt;td&gt;&lt;font size=3&gt;匹配除换行符 \n之外的任何单字符。要匹配 .，请使用 \。&lt;/font&gt;
&lt;tr&gt;
&lt;td&gt;&lt;font size=3&gt;[ &lt;/font&gt;
&lt;td&gt;&lt;font size=3&gt;标记一个中括号表达式的开始。要匹配 [，请使用 \[。&lt;/font&gt;
&lt;tr&gt;
&lt;td&gt;&lt;font size=3&gt;?&lt;/font&gt;
&lt;td&gt;&lt;font size=3&gt;匹配前面的子表达式零次或一次，或指明一个非贪婪限定符。要匹配 ? 字符，请使用 \?。&lt;/font&gt;
&lt;tr&gt;
&lt;td&gt;&lt;font size=3&gt;\&lt;/font&gt;
&lt;td&gt;&lt;font size=3&gt;将下一个字符标记为或特殊字符、或原义字符、或向后引用、或八进制转义符。例如， 'n' 匹配字符 'n'。'\n' 匹配换行符。序列 '\\' 匹配 &amp;quot;\&amp;quot;，而 '\(' 则匹配 &amp;quot;(&amp;quot;。&lt;/font&gt;
&lt;tr&gt;
&lt;td&gt;&lt;font size=3&gt;^&lt;/font&gt;
&lt;td&gt;&lt;font size=3&gt;匹配输入字符串的开始位置，除非在方括号表达式中使用，此时它表示不接受该字符集合。要匹配 ^ 字符本身，请使用 \^。&lt;/font&gt;
&lt;tr&gt;
&lt;td&gt;&lt;font size=3&gt;{&lt;/font&gt;
&lt;td&gt;&lt;font size=3&gt;标记限定符表达式的开始。要匹配 {，请使用 \{。&lt;/font&gt;
&lt;tr&gt;
&lt;td&gt;&lt;font size=3&gt;|&lt;/font&gt;
&lt;td&gt;&lt;font size=3&gt;指明两项之间的一个选择。要匹配 |，请使用 \|。&lt;/font&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br&gt;&lt;font size=3&gt;　　构造正则表达式的方法和创建数学表达式的方法一样。也就是用多种元字符与操作符将小的表达式结合在一起来创建更大的表达式。正则表达式的组件可以是单个的字符、字符集合、字符范围、字符间的选择或者所有这些组件的任意组合。 &lt;br&gt;&lt;/font&gt;
&lt;h3&gt;&lt;font size=3&gt;限定符&lt;/font&gt;&lt;/h3&gt;&lt;br&gt;&lt;font size=3&gt;　　限定符用来指定正则表达式的一个给定组件必须要出现多少次才能满足匹配。有*或+或?或{n}或{n,}或{n,m}共6种。 &lt;br&gt;　　*、+和?限定符都是贪婪的，因为它们会尽可能多的匹配文字，只有在它们的后面加上一个?就可以实现非贪婪或最小匹配。 &lt;br&gt;　　正则表达式的限定符有： &lt;br&gt;&lt;/font&gt;
&lt;table border=1&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;font size=3&gt;字符 &lt;/font&gt;
&lt;td&gt;&lt;font size=3&gt;描述&lt;/font&gt;
&lt;tr&gt;
&lt;td&gt;&lt;font size=3&gt;* &lt;/font&gt;
&lt;td&gt;&lt;font size=3&gt;匹配前面的子表达式零次或多次。例如，zo* 能匹配 &amp;quot;z&amp;quot; 以及 &amp;quot;zoo&amp;quot;。* 等价于{0,}。&lt;/font&gt;
&lt;tr&gt;
&lt;td&gt;&lt;font size=3&gt;+ &lt;/font&gt;
&lt;td&gt;&lt;font size=3&gt;匹配前面的子表达式一次或多次。例如，'zo+' 能匹配 &amp;quot;zo&amp;quot; 以及 &amp;quot;zoo&amp;quot;，但不能匹配 &amp;quot;z&amp;quot;。+ 等价于 {1,}。&lt;/font&gt;
&lt;tr&gt;
&lt;td&gt;&lt;font size=3&gt;? &lt;/font&gt;
&lt;td&gt;&lt;font size=3&gt;匹配前面的子表达式零次或一次。例如，&amp;quot;do(es)?&amp;quot; 可以匹配 &amp;quot;do&amp;quot; 或 &amp;quot;does&amp;quot; 中的&amp;quot;do&amp;quot; 。? 等价于 {0,1}。&lt;/font&gt;
&lt;tr&gt;
&lt;td&gt;&lt;font size=3&gt;{n} &lt;/font&gt;
&lt;td&gt;&lt;font size=3&gt;n 是一个非负整数。匹配确定的 n 次。例如，'o{2}' 不能匹配 &amp;quot;Bob&amp;quot; 中的 'o'，但是能匹配 &amp;quot;food&amp;quot; 中的两个 o。&lt;/font&gt;
&lt;tr&gt;
&lt;td&gt;&lt;font size=3&gt;{n,} &lt;/font&gt;
&lt;td&gt;&lt;font size=3&gt;n 是一个非负整数。至少匹配n 次。例如，'o{2,}' 不能匹配 &amp;quot;Bob&amp;quot; 中的 'o'，但能匹配 &amp;quot;foooood&amp;quot; 中的所有 o。'o{1,}' 等价于 'o+'。'o{0,}' 则等价于 'o*'。&lt;/font&gt;
&lt;tr&gt;
&lt;td&gt;&lt;font size=3&gt;{n,m} &lt;/font&gt;
&lt;td&gt;&lt;font size=3&gt;m 和 n 均为非负整数，其中n &amp;lt;= m。最少匹配 n 次且最多匹配 m 次。例如，&amp;quot;o{1,3}&amp;quot; 将匹配 &amp;quot;fooooood&amp;quot; 中的前三个 o。'o{0,1}' 等价于 'o?'。请注意在逗号和两个数之间不能有空格。&lt;/font&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br&gt;
&lt;h3&gt;&lt;font size=3&gt;定位符&lt;/font&gt;&lt;/h3&gt;&lt;br&gt;&lt;font size=3&gt;　　用来描述字符串或单词的边界，^和$分别指字符串的开始与结束，\b描述单词的前或后边界，\B表示非单词边界。&lt;ins&gt;&lt;font color="#ff0000"&gt;不能对定位符使用限定符。&lt;/font&gt;&lt;/ins&gt; &lt;br&gt;&lt;/font&gt;
&lt;h3&gt;&lt;font size=3&gt;选择&lt;/font&gt;&lt;/h3&gt;&lt;br&gt;&lt;font size=3&gt;　　用圆括号将所有选择项括起来，相邻的选择项之间用|分隔。但用圆括号会有一个副作用，是相关的匹配会被缓存，此时可用?:放在第一个选项前来消除这种副作用。 &lt;br&gt;　　其中?:是非捕获元之一，还有两个非捕获元是?=和?!，这两个还有更多的含义，前者为正向预查，在任何开始匹配圆括号内的正则表达式模式的位置来匹配搜索字符串，后者为负向预查，在任何开始不匹配该正则表达式模式的位置来匹配搜索字符串。 &lt;br&gt;&lt;/font&gt;
&lt;h3&gt;&lt;font size=3&gt;后向引用&lt;/font&gt;&lt;/h3&gt;&lt;br&gt;&lt;font size=3&gt;　　对一个正则表达式模式或部分模式两边添加圆括号将导致相关匹配存储到一个临时缓冲区中，所捕获的每个子匹配都按照在正则表达式模式中从左至右所遇到的内容存储。存储子匹配的缓冲区编号从 &lt;br&gt;1 开始，连续编号直至最大 99 个子表达式。每个缓冲区都可以使用 '\n' 访问，其中 n 为一个标识特定缓冲区的一位或两位十进制数。 &lt;br&gt;　　可以使用非捕获元字符 '?:', '?=', or '?!' 来忽略对相关匹配的保存。 &lt;br&gt;&lt;/font&gt;
&lt;h3&gt;&lt;font size=3&gt;各种操作符的运算优先级&lt;/font&gt;&lt;/h3&gt;&lt;br&gt;&lt;font size=3&gt;　　相同优先级的从左到右进行运算，不同优先级的运算先高后低。各种操作符的优先级从高到低如下： &lt;br&gt;&lt;/font&gt;
&lt;table border=1&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;font size=3&gt;操作符 &lt;/font&gt;
&lt;td&gt;&lt;font size=3&gt;描述&lt;/font&gt;
&lt;tr&gt;
&lt;td&gt;&lt;font size=3&gt;\ &lt;/font&gt;
&lt;td&gt;&lt;font size=3&gt;转义符&lt;/font&gt;
&lt;tr&gt;
&lt;td&gt;&lt;font size=3&gt;(), (?:), (?=), [] &lt;/font&gt;
&lt;td&gt;&lt;font size=3&gt;圆括号和方括号&lt;/font&gt;
&lt;tr&gt;
&lt;td&gt;&lt;font size=3&gt;*, +, ?, {n}, {n,}, {n,m} &lt;/font&gt;
&lt;td&gt;&lt;font size=3&gt;限定符&lt;/font&gt;
&lt;tr&gt;
&lt;td&gt;&lt;font size=3&gt;^, $, \anymetacharacter &lt;/font&gt;
&lt;td&gt;&lt;font size=3&gt;位置和顺序&lt;/font&gt;
&lt;tr&gt;
&lt;td&gt;&lt;font size=3&gt;| &lt;/font&gt;
&lt;td&gt;&lt;font size=3&gt;“或”操作&lt;/font&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br&gt;
&lt;h3&gt;&lt;font size=3&gt;全部符号解释&lt;/font&gt;&lt;/h3&gt;&lt;br&gt;
&lt;table border=1&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;font size=3&gt;字符 &lt;/font&gt;
&lt;td&gt;&lt;font size=3&gt;描述&lt;/font&gt;
&lt;tr&gt;
&lt;td&gt;&lt;font size=3&gt;\ &lt;/font&gt;
&lt;td&gt;&lt;font size=3&gt;将下一个字符标记为一个特殊字符、或一个原义字符、或一个 向后引用、或一个八进制转义符。例如，'n' 匹配字符 &amp;quot;n&amp;quot;。'\n' 匹配一个换行符。序列 '\\' 匹配 &amp;quot;\&amp;quot; 而 &amp;quot;\(&amp;quot; 则匹配 &amp;quot;(&amp;quot;。&lt;/font&gt;
&lt;tr&gt;
&lt;td&gt;&lt;font size=3&gt;^ &lt;/font&gt;
&lt;td&gt;&lt;font size=3&gt;匹配输入字符串的开始位置。如果设置了 RegExp 对象的 Multiline 属性，^ 也匹配 '\n' 或 '\r' 之后的位置。&lt;/font&gt;
&lt;tr&gt;
&lt;td&gt;&lt;font size=3&gt;$ &lt;/font&gt;
&lt;td&gt;&lt;font size=3&gt;匹配输入字符串的结束位置。如果设置了RegExp 对象的 Multiline 属性，$ 也匹配 '\n' 或 '\r' 之前的位置。&lt;/font&gt;
&lt;tr&gt;
&lt;td&gt;&lt;font size=3&gt;* &lt;/font&gt;
&lt;td&gt;&lt;font size=3&gt;匹配前面的子表达式零次或多次。例如，zo* 能匹配 &amp;quot;z&amp;quot; 以及 &amp;quot;zoo&amp;quot;。* 等价于{0,}。&lt;/font&gt;
&lt;tr&gt;
&lt;td&gt;&lt;font size=3&gt;+ &lt;/font&gt;
&lt;td&gt;&lt;font size=3&gt;匹配前面的子表达式一次或多次。例如，'zo+' 能匹配 &amp;quot;zo&amp;quot; 以及 &amp;quot;zoo&amp;quot;，但不能匹配 &amp;quot;z&amp;quot;。+ 等价于 {1,}。&lt;/font&gt;
&lt;tr&gt;
&lt;td&gt;&lt;font size=3&gt;? &lt;/font&gt;
&lt;td&gt;&lt;font size=3&gt;匹配前面的子表达式零次或一次。例如，&amp;quot;do(es)?&amp;quot; 可以匹配 &amp;quot;do&amp;quot; 或 &amp;quot;does&amp;quot; 中的&amp;quot;do&amp;quot; 。? 等价于 {0,1}。&lt;/font&gt;
&lt;tr&gt;
&lt;td&gt;&lt;font size=3&gt;{n} &lt;/font&gt;
&lt;td&gt;&lt;font size=3&gt;n 是一个非负整数。匹配确定的 n 次。例如，'o{2}' 不能匹配 &amp;quot;Bob&amp;quot; 中的 'o'，但是能匹配 &amp;quot;food&amp;quot; 中的两个 o。&lt;/font&gt;
&lt;tr&gt;
&lt;td&gt;&lt;font size=3&gt;{n,} &lt;/font&gt;
&lt;td&gt;&lt;font size=3&gt;n 是一个非负整数。至少匹配n 次。例如，'o{2,}' 不能匹配 &amp;quot;Bob&amp;quot; 中的 'o'，但能匹配 &amp;quot;foooood&amp;quot; 中的所有 o。'o{1,}' 等价于 'o+'。'o{0,}' 则等价于 'o*'。&lt;/font&gt;
&lt;tr&gt;
&lt;td&gt;&lt;font size=3&gt;{n,m} &lt;/font&gt;
&lt;td&gt;&lt;font size=3&gt;m 和 n 均为非负整数，其中n &amp;lt;= m。最少匹配 n 次且最多匹配 m 次。例如，&amp;quot;o{1,3}&amp;quot; 将匹配 &amp;quot;fooooood&amp;quot; 中的前三个 o。'o{0,1}' 等价于 'o?'。请注意在逗号和两个数之间不能有空格。&lt;/font&gt;
&lt;tr&gt;
&lt;td&gt;&lt;font size=3&gt;? &lt;/font&gt;
&lt;td&gt;&lt;font size=3&gt;当该字符紧跟在任何一个其他限制符 (*, +, ?, {n}, {n,}, {n,m}) 后面时，匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串，而默认的贪婪模式则尽可能多的匹配所搜索的字符串。例如，对于字符串 &amp;quot;oooo&amp;quot;，'o+?' 将匹配单个 &amp;quot;o&amp;quot;，而 'o+' 将匹配所有 'o'。&lt;/font&gt;
&lt;tr&gt;
&lt;td&gt;&lt;font size=3&gt;. &lt;/font&gt;
&lt;td&gt;&lt;font size=3&gt;匹配除 &amp;quot;\n&amp;quot; 之外的任何单个字符。要匹配包括 '\n' 在内的任何字符，请使用象 '[.\n]' 的模式。&lt;/font&gt;
&lt;tr&gt;
&lt;td&gt;&lt;font size=3&gt;(pattern) &lt;/font&gt;
&lt;td&gt;&lt;font size=3&gt;匹配 pattern 并获取这一匹配。所获取的匹配可以从产生的 Matches 集合得到，在VBScript 中使用 SubMatches 集合，在JScript 中则使用 $0…$9 属性。要匹配圆括号字符，请使用 '\(' 或 '\)'。&lt;/font&gt;
&lt;tr&gt;
&lt;td&gt;&lt;font size=3&gt;(?:pattern) &lt;/font&gt;
&lt;td&gt;&lt;font size=3&gt;匹配 pattern 但不获取匹配结果，也就是说这是一个非获取匹配，不进行存储供以后使用。这在使用 &amp;quot;或&amp;quot; 字符 (|) 来组合一个模式的各个部分是很有用。例如， 'industr(?:y|ies) 就是一个比 'industry|industries' 更简略的表达式。&lt;/font&gt;
&lt;tr&gt;
&lt;td&gt;&lt;font size=3&gt;(?=pattern) &lt;/font&gt;
&lt;td&gt;&lt;font size=3&gt;正向预查，在任何匹配 pattern 的字符串开始处匹配查找字符串。这是一个非获取匹配，也就是说，该匹配不需要获取供以后使用。例如，'Windows (?=95|98|NT|2000)' 能匹配 &amp;quot;Windows 2000&amp;quot; 中的 &amp;quot;Windows&amp;quot; ，但不能匹配 &amp;quot;Windows 3.1&amp;quot; 中的 &amp;quot;Windows&amp;quot;。预查不消耗字符，也就是说，在一个匹配发生后，在最后一次匹配之后立即开始下一次匹配的搜索，而不是从包含预查的字符之后开始。&lt;/font&gt;
&lt;tr&gt;
&lt;td&gt;&lt;font size=3&gt;(?!pattern) &lt;/font&gt;
&lt;td&gt;&lt;font size=3&gt;负向预查，在任何不匹配 pattern 的字符串开始处匹配查找字符串。这是一个非获取匹配，也就是说，该匹配不需要获取供以后使用。例如'Windows (?!95|98|NT|2000)' 能匹配 &amp;quot;Windows 3.1&amp;quot; 中的 &amp;quot;Windows&amp;quot;，但不能匹配 &amp;quot;Windows 2000&amp;quot; 中的 &amp;quot;Windows&amp;quot;。预查不消耗字符，也就是说，在一个匹配发生后，在最后一次匹配之后立即开始下一次匹配的搜索，而不是从包含预查的字符之后开始&lt;/font&gt;
&lt;tr&gt;
&lt;td&gt;&lt;font size=3&gt;x|y &lt;/font&gt;
&lt;td&gt;&lt;font size=3&gt;匹配 x 或 y。例如，'z|food' 能匹配 &amp;quot;z&amp;quot; 或 &amp;quot;food&amp;quot;。'(z|f)ood' 则匹配 &amp;quot;zood&amp;quot; 或 &amp;quot;food&amp;quot;。&lt;/font&gt;
&lt;tr&gt;
&lt;td&gt;&lt;font size=3&gt;[xyz] &lt;/font&gt;
&lt;td&gt;&lt;font size=3&gt;字符集合。匹配所包含的任意一个字符。例如， '[abc]' 可以匹配 &amp;quot;plain&amp;quot; 中的 'a'。&lt;/font&gt;
&lt;tr&gt;
&lt;td&gt;&lt;font size=3&gt;[^xyz] &lt;/font&gt;
&lt;td&gt;&lt;font size=3&gt;负值字符集合。匹配未包含的任意字符。例如， '[^abc]' 可以匹配 &amp;quot;plain&amp;quot; 中的'p'。&lt;/font&gt;
&lt;tr&gt;
&lt;td&gt;&lt;font size=3&gt;[a-z] &lt;/font&gt;
&lt;td&gt;&lt;font size=3&gt;字符范围。匹配指定范围内的任意字符。例如，'[a-z]' 可以匹配 'a' 到 'z' 范围内的任意小写字母字符。&lt;/font&gt;
&lt;tr&gt;
&lt;td&gt;&lt;font size=3&gt;[^a-z] &lt;/font&gt;
&lt;td&gt;&lt;font size=3&gt;负值字符范围。匹配任何不在指定范围内的任意字符。例如，'[^a-z]' 可以匹配任何不在 'a' 到 'z' 范围内的任意字符。&lt;/font&gt;
&lt;tr&gt;
&lt;td&gt;&lt;font size=3&gt;\b &lt;/font&gt;
&lt;td&gt;&lt;font size=3&gt;匹配一个单词边界，也就是指单词和空格间的位置。例如， 'er\b' 可以匹配&amp;quot;never&amp;quot; 中的 'er'，但不能匹配 &amp;quot;verb&amp;quot; 中的 'er'。&lt;/font&gt;
&lt;tr&gt;
&lt;td&gt;&lt;font size=3&gt;\B &lt;/font&gt;
&lt;td&gt;&lt;font size=3&gt;匹配非单词边界。'er\B' 能匹配 &amp;quot;verb&amp;quot; 中的 'er'，但不能匹配 &amp;quot;never&amp;quot; 中的 'er'。&lt;/font&gt;
&lt;tr&gt;
&lt;td&gt;&lt;font size=3&gt;\cx &lt;/font&gt;
&lt;td&gt;&lt;font size=3&gt;匹配由 x 指明的控制字符。例如， \cM 匹配一个 Control-M 或回车符。x 的值必须为 A-Z 或 a-z 之一。否则，将 c 视为一个原义的 'c' 字符。&lt;/font&gt;
&lt;tr&gt;
&lt;td&gt;&lt;font size=3&gt;\d &lt;/font&gt;
&lt;td&gt;&lt;font size=3&gt;匹配一个数字字符。等价于 [0-9]。&lt;/font&gt;
&lt;tr&gt;
&lt;td&gt;&lt;font size=3&gt;\D &lt;/font&gt;
&lt;td&gt;&lt;font size=3&gt;匹配一个非数字字符。等价于 [^0-9]。&lt;/font&gt;
&lt;tr&gt;
&lt;td&gt;&lt;font size=3&gt;\f &lt;/font&gt;
&lt;td&gt;&lt;font size=3&gt;匹配一个换页符。等价于 \x0c 和 \cL。&lt;/font&gt;
&lt;tr&gt;
&lt;td&gt;&lt;font size=3&gt;\n &lt;/font&gt;
&lt;td&gt;&lt;font size=3&gt;匹配一个换行符。等价于 \x0a 和 \cJ。&lt;/font&gt;
&lt;tr&gt;
&lt;td&gt;&lt;font size=3&gt;\r &lt;/font&gt;
&lt;td&gt;&lt;font size=3&gt;匹配一个回车符。等价于 \x0d 和 \cM。&lt;/font&gt;
&lt;tr&gt;
&lt;td&gt;&lt;font size=3&gt;\s &lt;/font&gt;
&lt;td&gt;&lt;font size=3&gt;匹配任何空白字符，包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。&lt;/font&gt;
&lt;tr&gt;
&lt;td&gt;&lt;font size=3&gt;\S &lt;/font&gt;
&lt;td&gt;&lt;font size=3&gt;匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。&lt;/font&gt;
&lt;tr&gt;
&lt;td&gt;&lt;font size=3&gt;\t &lt;/font&gt;
&lt;td&gt;&lt;font size=3&gt;匹配一个制表符。等价于 \x09 和 \cI。&lt;/font&gt;
&lt;tr&gt;
&lt;td&gt;&lt;font size=3&gt;\v &lt;/font&gt;
&lt;td&gt;&lt;font size=3&gt;匹配一个垂直制表符。等价于 \x0b 和 \cK。&lt;/font&gt;
&lt;tr&gt;
&lt;td&gt;&lt;font size=3&gt;\w &lt;/font&gt;
&lt;td&gt;&lt;font size=3&gt;匹配包括下划线的任何单词字符。等价于'[A-Za-z0-9_]'。&lt;/font&gt;
&lt;tr&gt;
&lt;td&gt;&lt;font size=3&gt;\W &lt;/font&gt;
&lt;td&gt;&lt;font size=3&gt;匹配任何非单词字符。等价于 '[^A-Za-z0-9_]'。&lt;/font&gt;
&lt;tr&gt;
&lt;td&gt;&lt;font size=3&gt;\xn &lt;/font&gt;
&lt;td&gt;&lt;font size=3&gt;匹配 n，其中 n 为十六进制转义值。十六进制转义值必须为确定的两个数字长。例如，'\x41' 匹配 &amp;quot;A&amp;quot;。'\x041' 则等价于 '\x04' &amp;amp; &amp;quot;1&amp;quot;。正则表达式中可以使用 ASCII 编码。.&lt;/font&gt;
&lt;tr&gt;
&lt;td&gt;&lt;font size=3&gt;\num &lt;/font&gt;
&lt;td&gt;&lt;font size=3&gt;匹配 num，其中 num 是一个正整数。对所获取的匹配的引用。例如，'(.)\1' 匹配两个连续的相同字符。&lt;/font&gt;
&lt;tr&gt;
&lt;td&gt;&lt;font size=3&gt;\n &lt;/font&gt;
&lt;td&gt;&lt;font size=3&gt;标识一个八进制转义值或一个向后引用。如果 \n 之前至少 n 个获取的子表达式，则 n 为向后引用。否则，如果 n 为八进制数字 (0-7)，则 n 为一个八进制转义值。&lt;/font&gt;
&lt;tr&gt;
&lt;td&gt;&lt;font size=3&gt;\nm &lt;/font&gt;
&lt;td&gt;&lt;font size=3&gt;标识一个八进制转义值或一个向后引用。如果 \nm 之前至少有 nm 个获得子表达式，则 nm 为向后引用。如果 \nm 之前至少有 n 个获取，则 n 为一个后跟文字 m 的向后引用。如果前面的条件都不满足，若 n 和 m 均为八进制数字 (0-7)，则 \nm 将匹配八进制转义值 nm。&lt;/font&gt;
&lt;tr&gt;
&lt;td&gt;&lt;font size=3&gt;\nml &lt;/font&gt;
&lt;td&gt;&lt;font size=3&gt;如果 n 为八进制数字 (0-3)，且 m 和 l 均为八进制数字 (0-7)，则匹配八进制转义值 nml。&lt;/font&gt;
&lt;tr&gt;
&lt;td&gt;&lt;font size=3&gt;\un &lt;/font&gt;
&lt;td&gt;&lt;font size=3&gt;匹配 n，其中 n 是一个用四个十六进制数字表示的 Unicode 字符。例如， \u00A9 匹配版权符号 (?)。&lt;/font&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br&gt;
&lt;h3&gt;&lt;font size=3&gt;部分例子&lt;/font&gt;&lt;/h3&gt;&lt;br&gt;
&lt;table border=1&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;font size=3&gt;正则表达式&lt;/font&gt;
&lt;td&gt;&lt;font size=3&gt;说明&lt;/font&gt;
&lt;tr&gt;
&lt;td&gt;&lt;font size=3&gt;/\b([a-z]+) \1\b/gi&lt;/font&gt;
&lt;td&gt;&lt;font size=3&gt;一个单词连续出现的位置&lt;/font&gt;
&lt;tr&gt;
&lt;td&gt;&lt;font size=3&gt;/(\w+):\/\/([^/:]+)(:\d*)?([^# ]*)/ &lt;/font&gt;
&lt;td&gt;&lt;font size=3&gt;将一个URL解析为协议、域、端口及相对路径&lt;/font&gt;
&lt;tr&gt;
&lt;td&gt;&lt;font size=3&gt;/^(?:Chapter|Section) [1-9][0-9]{0,1}$/&lt;/font&gt;
&lt;td&gt;&lt;font size=3&gt;定位章节的位置&lt;/font&gt;
&lt;tr&gt;
&lt;td&gt;&lt;font size=3&gt;/[-a-z]/&lt;/font&gt;
&lt;td&gt;&lt;font size=3&gt;A至z共26个字母再加一个-号。&lt;/font&gt;
&lt;tr&gt;
&lt;td&gt;&lt;font size=3&gt;/ter\b/&lt;/font&gt;
&lt;td&gt;&lt;font size=3&gt;可匹配chapter，而不能terminal&lt;/font&gt;
&lt;tr&gt;
&lt;td&gt;&lt;font size=3&gt;/\Bapt/&lt;/font&gt;
&lt;td&gt;&lt;font size=3&gt;可匹配chapter，而不能aptitude&lt;/font&gt;
&lt;tr&gt;
&lt;td&gt;&lt;font size=3&gt;/Windows(?=95 |98 |NT )/&lt;/font&gt;
&lt;td&gt;&lt;font size=3&gt;可匹配Windows95或Windows98或WindowsNT,当找到一个匹配后，从Windows后面开始进行下一次的检索匹配。&lt;/font&gt;
&lt;tr&gt;
&lt;td&gt;&lt;font size=3&gt;^[_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,3}$&lt;/font&gt;
&lt;td&gt;&lt;font size=3&gt;Email 合法格式检查&lt;/font&gt;
&lt;tr&gt;
&lt;td&gt;&lt;font size=3&gt;^[0-9]+$&lt;/font&gt;
&lt;td&gt;&lt;font size=3&gt;纯数据检查&lt;/font&gt;
&lt;tr&gt;
&lt;td&gt;&lt;font size=3&gt;^[0-9a-z]{1}[0-9a-z\-]{0,19}$&lt;/font&gt;
&lt;td&gt;&lt;font size=3&gt;用户名检查，字母和数字开始，只能含字母、数字、横杠&lt;/font&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=-8913911617972053559&amp;page=RSS%3a+%5bPHP%5d+PHP+%e6%ad%a3%e5%88%99%e8%a1%a8%e8%be%be%e5%bc%8f%e8%b5%84%e6%96%99&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=miaomin.spaces.live.com&amp;amp;GT1=miaomin"&gt;</description><comments>http://miaomin.spaces.live.com/Blog/cns!844B6C9C838C59C9!163.entry#comment</comments><guid isPermaLink="true">http://miaomin.spaces.live.com/Blog/cns!844B6C9C838C59C9!163.entry</guid><pubDate>Thu, 08 Dec 2005 09:10:56 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://miaomin.spaces.live.com/blog/cns!844B6C9C838C59C9!163/comments/feed.rss</wfw:commentRss><wfw:comment>http://miaomin.spaces.live.com/Blog/cns!844B6C9C838C59C9!163.entry#comment</wfw:comment><dcterms:modified>2005-12-08T09:10:56Z</dcterms:modified></item><item><title>[PHP] 截取中文字符串的问题</title><link>http://miaomin.spaces.live.com/Blog/cns!844B6C9C838C59C9!149.entry</link><description>&lt;div&gt;&lt;font size=3&gt; 以下代码试用于GB2312编码，截取中文字符串是PHP中一个头疼的问题，解决方法是根据值是否大于等于128来判断是否是双字节字符，以避免出现乱码的情况。但中英文混合、特殊符号等问题总是存在，现在写一个比较全面的，仅供参考：&lt;br&gt;&lt;br&gt;程序说明：&lt;br&gt;1. len 参数以中文字符为标准，1len等于2个英文字符，为了形式上好看些&lt;br&gt;2. 如果将magic参数设为false，则中文和英文同等看待，取绝对的字符数&lt;br&gt;3. 特别适用于用htmlspecialchars()进行过编码的字符串&lt;br&gt;4. 能正确处理GB2312中实体字符模式（&amp;amp;#93232;）&lt;br&gt;&lt;br&gt;程序代码：&lt;br&gt;&lt;/font&gt;&lt;span style="font-family:courier new"&gt;&lt;font size=3&gt;function FSubstr($title,$start,$len=&amp;quot;&amp;quot;,$magic=true)&lt;br&gt;{&lt;br&gt;/**&lt;br&gt;  *  powered by Smartpig&lt;br&gt;  *  mailto:d.einstein@263.net&lt;br&gt;  */&lt;br&gt;  &lt;br&gt;$length = 0;&lt;br&gt;if($len == &amp;quot;&amp;quot;) $len = strlen($title);&lt;br&gt;&lt;br&gt;//判断起始为不正确位置&lt;br&gt;if($start &amp;gt; 0)&lt;br&gt;{&lt;br&gt;  $cnum = 0;&lt;br&gt;  for($i=0;$i&amp;lt;$start;$i++)&lt;br&gt;  {&lt;br&gt;   if(ord(substr($title,$i,1)) &amp;gt;= 128) $cnum ++;&lt;br&gt;  }&lt;br&gt;  if($cnum%2 != 0) $start--;&lt;br&gt;  &lt;br&gt;  unset($cnum);&lt;br&gt;}&lt;br&gt;&lt;br&gt;if(strlen($title)&amp;lt;=$len) return substr($title,$start,$len);&lt;br&gt;&lt;br&gt;$alen   = 0;&lt;br&gt;$blen = 0;&lt;br&gt;&lt;br&gt;$realnum = 0;&lt;br&gt;&lt;br&gt;for($i=$start;$i&amp;lt;strlen($title);$i++)&lt;br&gt;{&lt;br&gt;  $ctype = 0;&lt;br&gt;  $cstep = 0;&lt;br&gt;  $cur = substr($title,$i,1);&lt;br&gt;  if($cur == &amp;quot;&amp;amp;&amp;quot;)&lt;br&gt;  {&lt;br&gt;   if(substr($title,$i,4) == &amp;quot;&amp;amp;lt;&amp;quot;)&lt;br&gt;   {&lt;br&gt;    $cstep = 4;&lt;br&gt;    $length += 4;&lt;br&gt;    $i += 3;&lt;br&gt;    $realnum ++;&lt;br&gt;    if($magic)&lt;br&gt;    {&lt;br&gt;     $alen ++;&lt;br&gt;    }&lt;br&gt;   }&lt;br&gt;   else if(substr($title,$i,4) == &amp;quot;&amp;amp;gt;&amp;quot;)&lt;br&gt;   {&lt;br&gt;    $cstep = 4;&lt;br&gt;    $length += 4;&lt;br&gt;    $i += 3;&lt;br&gt;    $realnum ++;&lt;br&gt;    if($magic)&lt;br&gt;    {&lt;br&gt;     $alen ++;&lt;br&gt;    }&lt;br&gt;   }&lt;br&gt;   else if(substr($title,$i,5) == &amp;quot;&amp;amp;amp;&amp;quot;)&lt;br&gt;   {&lt;br&gt;    $cstep = 5;&lt;br&gt;    $length += 5;&lt;br&gt;    $i += 4;&lt;br&gt;    $realnum ++;&lt;br&gt;    if($magic)&lt;br&gt;    {&lt;br&gt;     $alen ++;&lt;br&gt;    }&lt;br&gt;   }&lt;br&gt;   else if(substr($title,$i,6) == &amp;quot;&amp;amp;quot;&amp;quot;)&lt;br&gt;   {&lt;br&gt;    $cstep = 6;&lt;br&gt;    $length += 6;&lt;br&gt;    $i += 5;&lt;br&gt;    $realnum ++;&lt;br&gt;    if($magic)&lt;br&gt;    {&lt;br&gt;     $alen ++;&lt;br&gt;    }&lt;br&gt;   }&lt;br&gt;   else if(substr($title,$i,6) == &amp;quot;&amp;amp;#039;&amp;quot;)&lt;br&gt;   {&lt;br&gt;    $cstep = 6;&lt;br&gt;    $length += 6;&lt;br&gt;    $i += 5;&lt;br&gt;    $realnum ++;&lt;br&gt;    if($magic)&lt;br&gt;    {&lt;br&gt;     $alen ++;&lt;br&gt;    }&lt;br&gt;   }&lt;br&gt;   else if(preg_match(&amp;quot;/&amp;amp;#(\d+);/i&amp;quot;,substr($title,$i,8),$match))&lt;br&gt;   {&lt;br&gt;    $cstep = strlen($match[0]);&lt;br&gt;    $length += strlen($match[0]);&lt;br&gt;    $i += strlen($match[0])-1;&lt;br&gt;    $realnum ++;&lt;br&gt;    if($magic)&lt;br&gt;    {&lt;br&gt;     $blen ++;&lt;br&gt;     $ctype = 1;&lt;br&gt;    }&lt;br&gt;   }&lt;br&gt;  }else{&lt;br&gt;   if(ord($cur)&amp;gt;=128)&lt;br&gt;   {&lt;br&gt;    $cstep = 2;&lt;br&gt;    $length += 2;&lt;br&gt;    $i += 1;&lt;br&gt;    $realnum ++;&lt;br&gt;    if($magic)&lt;br&gt;    {&lt;br&gt;     $blen ++;&lt;br&gt;     $ctype = 1;&lt;br&gt;    }&lt;br&gt;   }else{&lt;br&gt;    $cstep = 1;&lt;br&gt;    $length +=1;&lt;br&gt;    $realnum ++;&lt;br&gt;    if($magic)&lt;br&gt;    {&lt;br&gt;     if(ord($cur) &amp;gt;= 65 &amp;amp;&amp;amp; ord($cur) &amp;lt;= 90)&lt;br&gt;     {&lt;br&gt;      $blen++;&lt;br&gt;     }else{&lt;br&gt;      $alen++;&lt;br&gt;     } &lt;br&gt;    }&lt;br&gt;   }&lt;br&gt;  }&lt;br&gt;  &lt;br&gt;  if($magic)&lt;br&gt;  {&lt;br&gt;   if(($blen*2+$alen) == ($len*2)) break;&lt;br&gt;   if(($blen*2+$alen) == ($len*2+1))&lt;br&gt;   {&lt;br&gt;    if($ctype == 1)&lt;br&gt;    {&lt;br&gt;     $length -= $cstep;&lt;br&gt;     break;&lt;br&gt;    }else{&lt;br&gt;     break;&lt;br&gt;    }&lt;br&gt;   }&lt;br&gt;  }else{&lt;br&gt;   if($realnum == $len) break;&lt;br&gt;  }&lt;br&gt;}&lt;br&gt;&lt;br&gt;unset($cur);&lt;br&gt;unset($alen);&lt;br&gt;unset($blen);&lt;br&gt;unset($realnum);&lt;br&gt;unset($ctype);&lt;br&gt;unset($cstep);&lt;br&gt;&lt;br&gt;return substr($title,$start,$length);&lt;br&gt;}&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=-8913911617972053559&amp;page=RSS%3a+%5bPHP%5d+%e6%88%aa%e5%8f%96%e4%b8%ad%e6%96%87%e5%ad%97%e7%ac%a6%e4%b8%b2%e7%9a%84%e9%97%ae%e9%a2%98&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=miaomin.spaces.live.com&amp;amp;GT1=miaomin"&gt;</description><comments>http://miaomin.spaces.live.com/Blog/cns!844B6C9C838C59C9!149.entry#comment</comments><guid isPermaLink="true">http://miaomin.spaces.live.com/Blog/cns!844B6C9C838C59C9!149.entry</guid><pubDate>Wed, 07 Dec 2005 05:04:47 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://miaomin.spaces.live.com/blog/cns!844B6C9C838C59C9!149/comments/feed.rss</wfw:commentRss><wfw:comment>http://miaomin.spaces.live.com/Blog/cns!844B6C9C838C59C9!149.entry#comment</wfw:comment><dcterms:modified>2005-12-07T05:04:47Z</dcterms:modified></item></channel></rss>