﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>PHP博客-为了忘却的纪念-随笔分类-web相关</title><link>http://www.phpweblog.net/fuyongjie/category/502.html</link><description>言己及众</description><language>zh-cn</language><lastBuildDate>Fri, 30 May 2008 13:35:04 GMT</lastBuildDate><pubDate>Fri, 30 May 2008 13:35:04 GMT</pubDate><ttl>60</ttl><item><title>责、权、利三者的匹配 </title><link>http://www.phpweblog.net/fuyongjie/archive/2008/05/30/4052.html</link><dc:creator>bestmost</dc:creator><author>bestmost</author><pubDate>Fri, 30 May 2008 05:33:00 GMT</pubDate><guid>http://www.phpweblog.net/fuyongjie/archive/2008/05/30/4052.html</guid><wfw:comment>http://www.phpweblog.net/fuyongjie/comments/4052.html</wfw:comment><comments>http://www.phpweblog.net/fuyongjie/archive/2008/05/30/4052.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.phpweblog.net/fuyongjie/comments/commentRss/4052.html</wfw:commentRss><trackback:ping>http://www.phpweblog.net/fuyongjie/services/trackbacks/4052.html</trackback:ping><description><![CDATA[
		<p> </p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<img src="http://www.phpweblog.net/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #000000">汶川大地震的突然发生，是对中国政府紧急应对灾害能力的一个严峻考验，对于一个问责制政府来说，也就是对政府承担责任的能力的一个考验，从十几天来整个救灾过程和实际救灾效果来看，胡温政府在履行责任方面总体上是合格的。 <br /><img src="http://www.phpweblog.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.phpweblog.net/images/OutliningIndicators/None.gif" align="top" />按一般的说法，当前中国政府是一个威权体制的政府，不是民主体制的政府。从理论上讲，一国政府坚持威权而不实行民主，执政党坚持集权和一党独大而不搞分权和政党轮替，其合法性也就在于权力与责任的匹配。即是说，只要权力的集中程度与责任的集中程度相一致，这种体制并非没有道理。 <br /><img src="http://www.phpweblog.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.phpweblog.net/images/OutliningIndicators/None.gif" align="top" />来自西方自由主义方面的一个经典攻击是：权力导致腐败，绝对权力导致绝对腐败；其实这个判断只涉及到权力与利益这一个方面的关系，没有涉及到权力与责任这另一个方面的关系。若对应地套过来说，就是：权力规定责任，绝对权力规定绝对责任。 <br /><img src="http://www.phpweblog.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.phpweblog.net/images/OutliningIndicators/None.gif" align="top" />责、权、利三者的匹配 <br /><img src="http://www.phpweblog.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.phpweblog.net/images/OutliningIndicators/None.gif" align="top" /> <br /><img src="http://www.phpweblog.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.phpweblog.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.phpweblog.net/images/OutliningIndicators/None.gif" align="top" />汶川地震救灾也许是个契机，催促中国找出在不弱化政府威权的条件下，从制度上遏制权力滥用、权力失责和官员贪腐的可行途径。（法新社） <br /><img src="http://www.phpweblog.net/images/OutliningIndicators/None.gif" align="top" />责权利三者的匹配是政治理论的基本问题，权力-利益关系和权力-责任关系是平行对称的一体两面，并无高下主次之分。之所以从自由主义的角度只侧重权-利关系，不大强调权-责关系，与自由主义对人类社会的基本假设直接相关。从“经济人”的假设出发，为政者也是“经济人”，也会利用一切机会谋求个人私利的最大化，所以对为政者首先要考虑如何制约其权力防止其擅用公权谋取私利。 <br /><img src="http://www.phpweblog.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.phpweblog.net/images/OutliningIndicators/None.gif" align="top" />但“经济人”假设并不是客观现实。在东方传统中，为政者与其说符合“经济人”假设不如说更接近“道德人”假设。按中国儒家“君子喻于义，小人喻于利”的标准，“经济人”假设实际上是一种小人假设。 <br /><img src="http://www.phpweblog.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.phpweblog.net/images/OutliningIndicators/None.gif" align="top" />这就是：假设为政者都是不惜将私人利益置于公益之上的恶棍和小人，若不从制度上制约他们，他们肯定会以权谋私。 <br /><img src="http://www.phpweblog.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.phpweblog.net/images/OutliningIndicators/None.gif" align="top" />而“道德人”假设则是君子假设，即假设为政者都是充满“先天下之忧而忧，后天下之乐而乐”高尚情怀的君子士大夫，如果不给他们足够大的权力，难以发挥出他们经世济民的远大抱负。 <br /><img src="http://www.phpweblog.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.phpweblog.net/images/OutliningIndicators/None.gif" align="top" />从为政者是“道德人”的假设出发，首先遇到的问题将是如何将责任范围与相应的权力相匹配的问题，而不是如何限制权力以避免腐败的问题。这个角度就是与自由主义角度相左的威权主义角度，也就是威权体制的合法性所在。从各国政治实践上看，两种假设都不能完全成立。 <br /><img src="http://www.phpweblog.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.phpweblog.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.phpweblog.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.phpweblog.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.phpweblog.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.phpweblog.net/images/OutliningIndicators/None.gif" align="top" />只要都是“经济人”，即使设置了一整套分权制度，配合以充分的媒体监督，仍然免不了恶棍和小人的篡权和滥权，导致政府无能、政绩恶劣。不仅如此，由于“坏的”领袖是通过“好的”制度上台的，一方面让上台的恶棍和小人都合理合法地披上了民主外衣，另一方面，反对恶棍和小人的行动反而成了对民主自由制度的攻击，使君子士大夫型的领袖处于不利的地位，于是，朝野乱象丛生，社会风气倒转。 <br /><img src="http://www.phpweblog.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.phpweblog.net/images/OutliningIndicators/None.gif" align="top" />但如果完全从“道德人”假设出发，不对权力进行制度性约束，假定官员们都会充分利用威权体制的权力自由而尽职尽责，肯定无法防止“道德人”自身的腐化变质，一旦“道德人”都蜕变成了“经济人”，由于权力不受制约，必然导致贪污腐败的大泛滥。 <br /><img src="http://www.phpweblog.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.phpweblog.net/images/OutliningIndicators/None.gif" align="top" />威权和高效难以弃于一旦 <br /><img src="http://www.phpweblog.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.phpweblog.net/images/OutliningIndicators/None.gif" align="top" />由此可见，西方式“三权分立”民主制度无非就是一种彻底抛弃了“道德人”幻想，完全按照每个人都是津津于私利的小人，而且一旦掌权必然成为恶棍的假设所完成的政治体制设计。 <br /><img src="http://www.phpweblog.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.phpweblog.net/images/OutliningIndicators/None.gif" align="top" />即使这个设计仍有可能被恶棍和小人所利用，对真正德才兼备的“道德人”领袖造成了束缚甚至压制，而且常使政府陷入低效低能、失职失责的半瘫痪状态，也只能当作是民主制度难免的弊病而加以容忍了。毕竟，最坏的情况是完全不能容忍的。 <br /><img src="http://www.phpweblog.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.phpweblog.net/images/OutliningIndicators/None.gif" align="top" />考虑到这个制度的诞生时代正是西方上帝已死、撒旦当道，每个人的人性之恶大膨胀，成群结队的goons and thugs（呆徒恶棍）横行四海巧取豪夺天下财富的殖民主义时代，仁人志士们出于保卫社会的最低愿望作出这样不得已的设计，完全可以理解。 <br /><img src="http://www.phpweblog.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.phpweblog.net/images/OutliningIndicators/None.gif" align="top" />但现在的问题是：如果一个国家的政府，或者出于捍卫本国主权、坚持自主道路的需要，或者出于保持社会整合、应对自然灾害的需要，必须要保持高效高能，必须要承担巨大的护国护民责任，如果不能如此，将有可能出现远比“经济人”对权力进行滥用更坏的情况，导致更大的国家和社会灾难，那么，这样的国家有可能选择为了制约“经济人”而放弃威权体制吗？ <br /><img src="http://www.phpweblog.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.phpweblog.net/images/OutliningIndicators/None.gif" align="top" />具体到中国的问题上，中国因为威权体制而压制了政治民主、放纵了官员的贪腐、导致了社会不公甚至积累了深层危机，这都是可以确认的事实。问题是：中国承担得了放弃威权体制、使政府因民主而失去高效能甚至陷入半瘫痪的后果吗？ <br /><img src="http://www.phpweblog.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.phpweblog.net/images/OutliningIndicators/None.gif" align="top" />在此次汶川地震救灾行动中乃至后续的预防次生灾害、灾区重建和社会恢复整个过程中，中国政府所履行的责任是巨大的，没有相应的威权和集权作支持是不大可能的。 <br /><img src="http://www.phpweblog.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.phpweblog.net/images/OutliningIndicators/None.gif" align="top" />寄望于实践的智慧 <br /><img src="http://www.phpweblog.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.phpweblog.net/images/OutliningIndicators/None.gif" align="top" />另外，中国历史上的君子士大夫传统仍在中国人的政治生活中强烈地延续着，胡温两位核心领袖的“道德人”形象在使威权体制尽可能发挥其优越方面、遏制其弊病方面起着巨大的作用，这样一种基本良好的状态暂时没有做大改变的必要。 <br /><img src="http://www.phpweblog.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.phpweblog.net/images/OutliningIndicators/None.gif" align="top" />再进一步，天灾方面的救灾只是一个方面，来自国际社会的人祸更使得中国政府不能有丝毫的弱化。当西方强权终于演变成帝国之后，中国也只能以帝国的形式保存自己。 <br /><img src="http://www.phpweblog.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.phpweblog.net/images/OutliningIndicators/None.gif" align="top" />剩下的问题就是如何尽量消除威权体制被“经济人”所利用后导致的严重弊病，找出在不弱化政府威权的条件下从制度上遏制权力滥用、权力失责和官员贪腐的可行途径。这是没有前例可循也没有理论可依的探索，只能寄希望于中国人的实践智慧。 <br /><img src="http://www.phpweblog.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.phpweblog.net/images/OutliningIndicators/None.gif" align="top" />汶川地震救灾，也许是个契机。 作者是《纽西兰中文先驱报》主编 <br /><img src="http://www.phpweblog.net/images/OutliningIndicators/None.gif" align="top" /></span>
		</div>
<img src ="http://www.phpweblog.net/fuyongjie/aggbug/4052.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.phpweblog.net/fuyongjie/" target="_blank">bestmost</a> 2008-05-30 13:33 <a href="http://www.phpweblog.net/fuyongjie/archive/2008/05/30/4052.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>select覆盖div的解决方案</title><link>http://www.phpweblog.net/fuyongjie/archive/2008/05/28/3959.html</link><dc:creator>bestmost</dc:creator><author>bestmost</author><pubDate>Wed, 28 May 2008 08:48:00 GMT</pubDate><guid>http://www.phpweblog.net/fuyongjie/archive/2008/05/28/3959.html</guid><wfw:comment>http://www.phpweblog.net/fuyongjie/comments/3959.html</wfw:comment><comments>http://www.phpweblog.net/fuyongjie/archive/2008/05/28/3959.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.phpweblog.net/fuyongjie/comments/commentRss/3959.html</wfw:commentRss><trackback:ping>http://www.phpweblog.net/fuyongjie/services/trackbacks/3959.html</trackback:ping><description><![CDATA[
		<table style="BORDER-COLLAPSE: collapse" cellspacing="0" cellpadding="0" width="96%" border="0">
				<tbody>
						<tr>
								<td width="100%" bgcolor="#f3f3f3">
								</td>
								<td width="7" height="7">
										<img alt="" src="http://blog.chinaunix.net/templates/tech/images/w_right_top.gif" border="0" />
								</td>
						</tr>
						<tr>
								<td align="middle" bgcolor="#f3f3f3" colspan="3">
										<table style="BORDER-COLLAPSE: collapse; WORD-WRAP: break-word" cellspacing="0" cellpadding="0" width="100%" border="0">
												<tbody>
														<tr>
																<td align="middle" height="25">
																		<font style="FONT-SIZE: 14pt" color="#02368d">
																				<b>select覆盖div的解决方案</b>
																		</font>
																		<br />
																</td>
														</tr>
														<tr>
																<td bgcolor="#d2dee2" height="1">
																</td>
														</tr>
														<tr>
																<td bgcolor="#ffffff" height="1">
																</td>
														</tr>
														<tr>
																<td align="middle">
																		<table style="BORDER-COLLAPSE: collapse; WORD-WRAP: break-word" cellspacing="0" cellpadding="0" width="100%" border="0">
																				<tbody>
																						<tr>
																								<td width="100%">
																										<div id="art" style="MARGIN: 15px" width="100%">
																												<div>&lt;iframe src="javascript:false" style="position:absolute; visibility:inherit; top:0px; left:0px; width:100px; height:200px; z-index:-1; filter='progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=0)';"&gt;&lt;/iframe&gt;</div>
																												<div>-----在&lt;/div&gt;前加入上面的语句<br />虽说div直接盖不住select<br />但是div可以盖iframe，而iframe可以盖select,<br />所以，把一个iframe来当作div的底，<br />这个div就可以盖住select了.<br /><br /></div>
																										</div>
																								</td>
																						</tr>
																				</tbody>
																		</table>
																</td>
														</tr>
												</tbody>
										</table>
								</td>
						</tr>
				</tbody>
		</table>
		<table style="TABLE-LAYOUT: fixed" cellspacing="0" cellpadding="0" width="100%" bgcolor="#ffffff" border="0">
				<tbody>
						<tr>
								<td class="entry">
										<table cellspacing="0" cellpadding="0" width="100%" border="0">
												<tbody>
														<tr>
																<td valign="top">
																		<span class="arttitle">再如：<br />能盖住Select的Div</span>
																</td>
														</tr>
														<tr>
																<td class="details" valign="top" align="right">
																</td>
														</tr>
														<tr>
																<td class="artbody" valign="top">
																		<br />
																		<div onmouseover="this.style.height=100;" style="Z-INDEX: 10; OVERFLOW: hidden; WIDTH: 100px; POSITION: absolute; HEIGHT: 18px" onmouseout="this.style.height=18;">
																				<iframe style="Z-INDEX: -1; LEFT: 0px; WIDTH: 100%; POSITION: absolute; TOP: 0px; HEIGHT: 100%; scrolling: no" src="/about:blank" frameborder="0">
																				</iframe>
																				<div style="BACKGROUND-COLOR: #cccccc">aaaaaaa<br />bbbbbbb<br />ccccccc<br />ccccccc<br />ccccccc<br />ccccccc</div>
																		</div>
																		<select style="WIDTH: 200px">
																				<option selected="">test0</option>
																				<option>test1</option>
																				<option>test2</option>
																				<option>test3</option>
																		</select>
																		<div class="wpmd">&lt;div style="z-index:10;position:absolute;width:100;height:18;overflow:hidden;" onmouseover="this.style.height=100;" onmouseout="this.style.height=18;"&gt;<br />&lt;iframe  style="position:absolute;z-index:-1;width:100%;height:100%;top:0;left:0;scrolling:no;" frameborder="0" src="/about:blank"&gt;&lt;/iframe&gt;<br />&lt;div style="background-color:#cccccc;"&gt;aaaaaaa&lt;br&gt;bbbbbbb&lt;br&gt;ccccccc&lt;br&gt;ccccccc&lt;br&gt;ccccccc&lt;br&gt;ccccccc&lt;/div&gt;<br />&lt;/div&gt; 
<div>&lt;select style="width:200" &gt;&lt;option&gt;test0&lt;option&gt;test1&lt;option&gt;test2&lt;option&gt;test3&lt;/select&gt;</div></div>
																</td>
														</tr>
												</tbody>
										</table>
								</td>
						</tr>
				</tbody>
		</table>
<img src ="http://www.phpweblog.net/fuyongjie/aggbug/3959.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.phpweblog.net/fuyongjie/" target="_blank">bestmost</a> 2008-05-28 16:48 <a href="http://www.phpweblog.net/fuyongjie/archive/2008/05/28/3959.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在线编辑器最新版FCKeditor配置过程 </title><link>http://www.phpweblog.net/fuyongjie/archive/2008/05/28/3937.html</link><dc:creator>bestmost</dc:creator><author>bestmost</author><pubDate>Wed, 28 May 2008 03:06:00 GMT</pubDate><guid>http://www.phpweblog.net/fuyongjie/archive/2008/05/28/3937.html</guid><wfw:comment>http://www.phpweblog.net/fuyongjie/comments/3937.html</wfw:comment><comments>http://www.phpweblog.net/fuyongjie/archive/2008/05/28/3937.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.phpweblog.net/fuyongjie/comments/commentRss/3937.html</wfw:commentRss><trackback:ping>http://www.phpweblog.net/fuyongjie/services/trackbacks/3937.html</trackback:ping><description><![CDATA[<div class=tit>&nbsp;</div>
<div class=date>&nbsp;</div>
<table style="TABLE-LAYOUT: fixed">
    <tbody>
        <tr>
            <td>
            <div class=cnt id=blog_text>
            <div class=textbox-content><strong>在线编辑器最新版FCKeditor配置过程</strong><br><br>1.&nbsp;&nbsp;<br>先下载FCKeditor2.3.2&nbsp;&nbsp;&nbsp;<br>下载地址：<br><a href="http://prdownloads.sourceforge.net/fckeditor/FCKeditor_2.3.2.zip?download" target=_blank><font color=#800080>http://prdownloads.sourceforge.net/fckeditor/FCKeditor_2.3.2.zip?download</font></a> <br><a href="http://free5.ys168.com/?bapilong" target=_blank>http://free5.ys168.com/?bapilong</a><br><strong>官方下载:</strong><a href="http://www.fckeditor.net/download" target=_blank>http://www.fckeditor.net/download </a></div>
            <div class=textbox-content>
            <p>2.<br>在自己的PHP服务器根目录下随意新建目录，我自己建立的是/test/，将下载的文件解压到该目录中。<br>目录结构如下：<br>test&nbsp;&nbsp;&nbsp;&nbsp; 测试的目录<br>&nbsp;&nbsp;&nbsp; |<br>&nbsp;&nbsp;&nbsp; |_____FCKeditor/&nbsp;&nbsp;&nbsp; 下载FCKeditor解压后的目录<br>&nbsp;&nbsp;&nbsp; |<br>&nbsp;&nbsp;&nbsp; |_____test.php&nbsp;&nbsp;&nbsp;&nbsp; (新建用来测试的文件，下附代码)<br>&nbsp;&nbsp;&nbsp; | <br>&nbsp;&nbsp;&nbsp; |_____shop.php&nbsp;&nbsp;&nbsp;&nbsp; (新建用来接收提交数据的显示文件页面，下附代码) <br><br>3.<br>现在FCKeditor已经就绪。只要加入下列代码生成一个编辑器(放置在</p>
            </div>
            <div class=textbox-content></div>
            <div class=textbox-content>中) <br>test.php文件简单代码如下：<br><span style="COLOR: #000000"><font style="BACKGROUND-COLOR: #ffffcc"><span style="COLOR: #0000cc">&lt;</span><span style="COLOR: #0000ff">html</span><span style="COLOR: #0000cc">&gt;</span><br><span style="COLOR: #0000cc">&lt;</span><span style="COLOR: #0000ff">head</span><span style="COLOR: #0000cc">&gt;</span><br><span style="COLOR: #0000cc">&lt;</span><span style="COLOR: #0000cc">/</span><span style="COLOR: #0000ff">head</span><span style="COLOR: #0000cc">&gt;</span><br><span style="COLOR: #0000cc">&lt;</span><span style="COLOR: #0000ff">body</span><span style="COLOR: #0000cc">&gt;</span><br><span style="COLOR: #0000cc">&lt;</span><span style="COLOR: #0000ff">form</span> <span style="COLOR: #ff0000">name</span><span style="COLOR: #0000cc">=</span><span style="COLOR: #ff00ff">"form1"</span> <span style="COLOR: #ff0000">action</span><span style="COLOR: #0000cc">=</span><span style="COLOR: #ff00ff">"shop.php"</span> <span style="COLOR: #ff0000">method</span><span style="COLOR: #0000cc">=</span><span style="COLOR: #ff00ff">"post"</span> <span style="COLOR: #0000cc">&gt;</span><br><span style="COLOR: #0000cc">&lt;</span><span style="COLOR: #0000cc">?</span>php<br>include<span style="COLOR: #0000cc">(</span><span style="COLOR: #ff00ff">"FCKeditor/fckeditor.php"</span><span style="COLOR: #0000cc">)</span> <span style="COLOR: #0000cc">;</span><br>$oFCKeditor <span style="COLOR: #0000cc">=</span> new FCKeditor<span style="COLOR: #0000cc">(</span><span style="COLOR: #ff00ff">'FCKeditor1'</span><span style="COLOR: #0000cc">)</span> <span style="COLOR: #0000cc">;</span><br>$oFCKeditor-<span style="COLOR: #0000cc">&gt;</span>BasePath <span style="COLOR: #0000cc">=</span> <span style="COLOR: #ff00ff">'./FCKeditor/'</span><span style="COLOR: #0000cc">;</span><br>$oFCKeditor-<span style="COLOR: #0000cc">&gt;</span><span style="COLOR: #ff0000">Value</span> <span style="COLOR: #0000cc">=</span> <span style="COLOR: #ff00ff">''</span><span style="COLOR: #0000cc">;</span><br>$oFCKeditor-<span style="COLOR: #0000cc">&gt;</span>Create<span style="COLOR: #0000cc">(</span><span style="COLOR: #0000cc">)</span> <span style="COLOR: #0000cc">;</span><br>?<span style="COLOR: #0000cc">&gt;</span><br><span style="COLOR: #0000cc">&lt;</span><span style="COLOR: #0000ff">INPUT</span> <span style="COLOR: #ff0000">type</span><span style="COLOR: #0000cc">=</span><span style="COLOR: #ff00ff">"submit"</span> <span style="COLOR: #ff0000">name</span><span style="COLOR: #0000cc">=</span><span style="COLOR: #ff00ff">"submit"</span> <span style="COLOR: #ff0000">value</span><span style="COLOR: #0000cc">=</span><span style="COLOR: #ff00ff">"提交"</span><span style="COLOR: #0000cc">&gt;</span><br><span style="COLOR: #0000cc">&lt;</span><span style="COLOR: #0000cc">/</span><span style="COLOR: #0000ff">form</span><span style="COLOR: #0000cc">&gt;</span><br><span style="COLOR: #0000cc">&lt;</span><span style="COLOR: #0000cc">/</span><span style="COLOR: #0000ff">body</span><span style="COLOR: #0000cc">&gt;</span><br><span style="COLOR: #0000cc">&lt;</span><span style="COLOR: #0000cc">/</span><span style="COLOR: #0000ff">html</span><span style="COLOR: #0000cc">&gt;</span></font><br></span><br>"FCKeditor1" 是表单中的编辑器对应的输入框名称.&nbsp;&nbsp;&nbsp; "_samples"目录下有使用范例。<br>shop.php代码如下：<br>使用 $sValue = stripslashes( $_POST['FCKeditor1'] ) ; 来接收编辑器中输入的内容。<br><br><span style="COLOR: #000000"><font style="BACKGROUND-COLOR: #ffffcc"><span style="COLOR: #0000cc">&lt;</span><span style="COLOR: #0000cc">?</span><span style="COLOR: #0000ff">php</span><br><span style="COLOR: #0000ff">$</span><span style="COLOR: #008080">sValue</span> <span style="COLOR: #0000cc">=</span> <span style="COLOR: #ff0000">stripslashes</span><span style="COLOR: #0000cc">(</span> <span style="COLOR: #0000ff">$</span><span style="COLOR: #008080">_POST</span><span style="COLOR: #0000cc">[</span><span style="COLOR: #ff00ff">'FCKeditor1'</span><span style="COLOR: #0000cc">]</span> <span style="COLOR: #0000cc">)</span><span style="COLOR: #0000cc">;</span><br><span style="COLOR: #ff0000">echo</span><span style="COLOR: #ff00ff">"$sValue"</span><span style="COLOR: #0000cc">;</span><br><span style="COLOR: #0000cc">?</span><span style="COLOR: #0000cc">&gt;</span></font></span></div>
            <div class=textbox-content>
            <p>该文件，只是简单的测试显示页面，相关的插入数据库的函数，自己根据自己的实际情况添加进去就得了</p>
            <p>4.<br>配置上传和浏览功能&nbsp;&nbsp;&nbsp;<br>打开fckconfig.js文件进行简单的配置 <br>以前旧版本的，很多教程都会说到以下的配置值必须是&#8220;true&#8221;，现在2.3.2版本的，你会发觉，都已经设置成&#8220;true &#8221;值了。<br><br><span style="COLOR: #000000"><font style="BACKGROUND-COLOR: #ffffcc">FCKConfig<span style="COLOR: #0000cc">.</span>LinkBrowser <span style="COLOR: #0000cc">=</span> true <span style="COLOR: #0000cc">;</span><br>FCKConfig<span style="COLOR: #0000cc">.</span>ImageBrowser <span style="COLOR: #0000cc">=</span> true <span style="COLOR: #0000cc">;</span><br>FCKConfig<span style="COLOR: #0000cc">.</span>FlashBrowser <span style="COLOR: #0000cc">=</span> true <span style="COLOR: #0000cc">;</span><br>FCKConfig<span style="COLOR: #0000cc">.</span>LinkUpload <span style="COLOR: #0000cc">=</span> true <span style="COLOR: #0000cc">;</span><br>FCKConfig<span style="COLOR: #0000cc">.</span>ImageUpload <span style="COLOR: #0000cc">=</span> true <span style="COLOR: #0000cc">;</span><br>FCKConfig<span style="COLOR: #0000cc">.</span>FlashUpload <span style="COLOR: #0000cc">=</span> true <span style="COLOR: #0000cc">;</span></font></span><br><br>接着搜索fckconfig.js文件中的:&nbsp;&nbsp;&nbsp; var _FileBrowserLanguage&nbsp;&nbsp;&nbsp;&nbsp; （143行）<br>它的初始设置值是&nbsp;&nbsp;&nbsp; var _FileBrowserLanguage&nbsp;&nbsp;&nbsp; = 'asp' ;<br>那么我是需要PHP版本的，那么就可以改成var _FileBrowserLanguage&nbsp;&nbsp;&nbsp; ='php' <br>而且，它适用于 &#8220;asp | aspx | cfm | lasso | perl | php | py &#8221; 等等编程语言，改回你自己需要的就OK。<br>它的作用是指向程序类型的配置文件路径。<br>再找到144行，var _FileBrowserLanguage ='asp';&nbsp;&nbsp;&nbsp; 也改成var _FileBrowserLanguage ='PHP';&nbsp;&nbsp;<br>意思是对应编程语言类型的上传配置文件路径。<br>fckconfig.js配置完毕。。。<br><br>5.<br>然后编辑FCKeditor安装目录下的浏览程序配置文件和上传程序配置文件,需要明确指定为true。 <br>打开文件 /editor/filemanager/browser/default/connectors/php/config.php<br><br><span style="COLOR: #000000"><font style="BACKGROUND-COLOR: #ffffcc"><span style="COLOR: #0000cc">/</span><span style="COLOR: #0000cc">/</span> SECURITY<span style="COLOR: #0000cc">:</span> You must explicitelly enable this <span style="COLOR: #ff00ff">"connector"</span><span style="COLOR: #0000cc">.</span> <span style="COLOR: #0000cc">(</span>Set it to <span style="COLOR: #ff00ff">"true"</span><span style="COLOR: #0000cc">)</span><span style="COLOR: #0000cc">.</span><br>$Config<span style="COLOR: #0000cc">[</span><span style="COLOR: #ff00ff">'Enabled'</span><span style="COLOR: #0000cc">]</span> <span style="COLOR: #0000cc">=</span> true <span style="COLOR: #0000cc">;</span><br><span style="COLOR: #0000cc">/</span><span style="COLOR: #0000cc">/</span> Path to user files relative to the document root<span style="COLOR: #0000cc">.</span><br>$Config<span style="COLOR: #0000cc">[</span><span style="COLOR: #ff00ff">'UserFilesPath'</span><span style="COLOR: #0000cc">]</span> <span style="COLOR: #0000cc">=</span> <span style="COLOR: #ff00ff">'/UserFiles/'</span> <span style="COLOR: #0000cc">;</span></font></span></p>
            </div>
            <div class=textbox-content>
            <p><br><br>打开文件 /editor/filemanager/upload/php/config.php</p>
            <p><span style="COLOR: #000000"><font style="BACKGROUND-COLOR: #ffffcc"><span style="COLOR: #0000cc">/</span><span style="COLOR: #0000cc">/</span> SECURITY<span style="COLOR: #0000cc">:</span> You must explicitelly enable this <span style="COLOR: #ff00ff">"uploader"</span><span style="COLOR: #0000cc">.</span> <br>$Config<span style="COLOR: #0000cc">[</span><span style="COLOR: #ff00ff">'Enabled'</span><span style="COLOR: #0000cc">]</span> <span style="COLOR: #0000cc">=</span> true <span style="COLOR: #0000cc">;</span><br><span style="COLOR: #0000cc">/</span><span style="COLOR: #0000cc">/</span> Path to uploaded files relative to the document root<span style="COLOR: #0000cc">.</span><br>$Config<span style="COLOR: #0000cc">[</span><span style="COLOR: #ff00ff">'UserFilesPath'</span><span style="COLOR: #0000cc">]</span> <span style="COLOR: #0000cc">=</span> <span style="COLOR: #ff00ff">'/UserFiles/'</span> <span style="COLOR: #0000cc">;</span></font></span></p>
            </div>
            <div class=textbox-content>
            <p><br>6.<br>好了。。这样可以上传文件了。。仔细测试了好几次，突然发觉上传以中文命名的图片或文件，会出现文件名乱码了。应该是在javascript的url编码传递中造成的了，那么<br>就想想法办把它解决。细想还是用最原始的方法，就用上传时间作为文件命名。那么找到上传的文件：\editor\filemanager\upload\php\upload.php&nbsp;&nbsp;<br>打开找到</p>
            <p><span style="COLOR: #000000"><font style="BACKGROUND-COLOR: #ffffcc">$sFileName <span style="COLOR: #0000cc">=</span> $oFile<span style="COLOR: #0000cc">[</span><span style="COLOR: #ff00ff">'name'</span><span style="COLOR: #0000cc">]</span> <span style="COLOR: #0000cc">;</span></font> </span><br><br>替换为：</p>
            <p><span style="COLOR: #000000"><font style="BACKGROUND-COLOR: #ffffcc">$sFileName <span style="COLOR: #0000cc">=</span> $oFile<span style="COLOR: #0000cc">[</span><span style="COLOR: #ff00ff">'name'</span><span style="COLOR: #0000cc">]</span> <span style="COLOR: #0000cc">;</span><br>$sOriginalFileName <span style="COLOR: #0000cc">=</span> $sFileName <span style="COLOR: #0000cc">;</span><br>$sExtension <span style="COLOR: #0000cc">=</span> substr<span style="COLOR: #0000cc">(</span> $sFileName<span style="COLOR: #0000cc">,</span> <span style="COLOR: #0000cc">(</span> strrpos<span style="COLOR: #0000cc">(</span><span style="COLOR: #0000cc">$</span>sFileName<span style="COLOR: #0000cc">,</span> <span style="COLOR: #ff00ff">'.'</span><span style="COLOR: #0000cc">)</span> <span style="COLOR: #0000cc">+</span> 1 <span style="COLOR: #0000cc">)</span> <span style="COLOR: #0000cc">)</span> <span style="COLOR: #0000cc">;</span><br>$sExtension <span style="COLOR: #0000cc">=</span> strtolower<span style="COLOR: #0000cc">(</span> $sExtension <span style="COLOR: #0000cc">)</span> <span style="COLOR: #0000cc">;</span><br>$sFileName <span style="COLOR: #0000cc">=</span> date<span style="COLOR: #0000cc">(</span><span style="COLOR: #ff00ff">"YmdHis"</span><span style="COLOR: #0000cc">,</span>time<span style="COLOR: #0000cc">(</span><span style="COLOR: #0000cc">)</span><span style="COLOR: #0000cc">+</span>22800<span style="COLOR: #0000cc">)</span><span style="COLOR: #0000cc">.</span><span style="COLOR: #ff00ff">"."</span><span style="COLOR: #0000cc">.</span><span style="COLOR: #0000cc">$</span>sExtension<span style="COLOR: #0000cc">;</span></font></span></p>
            </div>
            <div class=textbox-content>
            <p><br>这样，就可以解决了上传文件时，遇到中文命名的文件出现乱码而无法显示的问题。<br><br>还有一点，就是要在服务器根目录下建立UserFiles文件夹，否则上无法上传文件，这点很多网上的提问无法上传文件的原因。只要在服务器根目录下建立UserFiles目录，程序有目录指向<br>就能上传文件了。再有的就是该编辑器自动建立了(Image,File,Flash...)等文件夹在UserFiles中，这是自动文件分类程序中的作用了，作用是给管理者更好的文件类型的管理。</p>
            <p>-------------------------------------------------------------------------------------------------</p>
            </div>
            <div class=textbox-content></div>
            <div class=textbox-content></div>
            <div class=textbox-content>
            <div style="FLOAT: right" align=right></div>
            <span class=bold>FCKeditor的配置和使用方法</span><br><br>
            <div class=t_msgfont>
            <p><u><strong><font color=#ff0000>FCKeditor</font></strong></u> 是一个十分强大的网页文本编辑器，它支持多种脚本编程语言和支持多国语言。如果你还不知道或者你知道还不会配置这个的话，请你继续往下看.<br>我用是FCKeditot的版本是2.1，不过现在已经有<u><strong><font color=#ff0000>FCKeditor</font></strong></u> 2.3.2 released版本了，你可以到他的官方网站上去下载 <a href="http://www.fckeditor.net/" target=_blank>http://www.FCKeditor.net/</a><br>本文介绍的是关于php的配置方法，其他语言的配置方法是和它一样的。<br>假设网站的目录为：<br>\www<br>&nbsp;&nbsp;&nbsp;&nbsp; \index.php<br>&nbsp;&nbsp;&nbsp;&nbsp; \inc<br>&nbsp;&nbsp;&nbsp;&nbsp; \FCKeditor<br>一：调用<u><strong><font color=#ff0000>FCKeditor</font></strong></u>的两种方法<br>1：通过创建实例<br>&nbsp;&nbsp; 在这里只写调用它的代码了，网站的其他代码当然由你自己写了，把下面的代码加在应该加的地方。<br>&nbsp;&nbsp; &lt;?php<br>&nbsp;&nbsp; include_once("FCKeditor/fckeditor.php");&nbsp;&nbsp;&nbsp;&nbsp; //引用<u><strong><font color=#ff0000>FCKeditor</font></strong></u>.php这个文件<br>&nbsp;&nbsp; $FCKeditor=new <u><strong><font color=#ff0000>FCKeditor</font></strong></u>('welefen');&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //创建<u><strong><font color=#ff0000>FCKeditor</font></strong></u>对象的实例<br>&nbsp;&nbsp; $FCKeditor-&gt;BasePath='FCKeditor/';&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //FCKeditor所在的位置，这里它的位置就是'FCKeditor/';<br>&nbsp;&nbsp; $FCkeditor-&gt;ToolbarSet='Default';&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //工具按钮设置<br>&nbsp;&nbsp; $FCKeditor-&gt;Width='100%';&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //设置它的宽度<br>&nbsp;&nbsp; $FCKeditor-&gt;Height='300px';&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //设置它的高度<br>&nbsp;&nbsp; $FCkeditor-&gt;Create(); <br>&nbsp;&nbsp; ?&gt;<br>2:通过iframe调用创建<br>在你认为该加的地方加上<br>&lt;INPUT id=content style="DISPLAY: none" type=hidden name="welefen"&gt;<br>&lt;INPUT id=content___Config style="DISPLAY: none" type=hidden&gt;<br>&lt;IFRAME id=content___Frame src="FCKeditor/editor/fckeditor.html?InstanceName=welefen&amp;Toolbar=Default" frameBorder=0 width=100% scrolling=no height=300&gt;<br>&lt;/IFRAME&gt;<br>对上述两种方法的说明：<br>在上述两种方法中，你都看到了字符串'welefen'，你可能不知道是什么意思，现在我给你解释一下<br>如果你要将文本编辑器中的内容在另外一个页面显示或者要将在它保存在数据库，你可以用<br>$_POST['welefen']或者用$_GET['welefen']来获取文本编辑器中的内容,具体是用post还是用get那要看你用的是什么传递方法了<br>当然你也可以把welefen改成你想要用的，如'content'.<br>如果你还不知道什么是ajax，那么这一段话你就不用看了。<br>当你用ajax的来获得内容的时候是不是发现得不到内容，如：<br>&lt;script&gt;alert(document.form.content.value)&lt;/script&gt;你会发现谈出的窗口没内容<br>那么我们可以通过下面的代码来获得它的内容：<br>function getContentValue()<br>{<br>var oEditor = FCKeditorAPI.GetInstance('content') ;<br>var acontent=oEditor.GetXHTML();<br>return acontent;<br>}<br>二：配置一些文件<br>1:fckconfig.js的配置<br>&nbsp;&nbsp; (1).工具按钮设置<br>&nbsp;&nbsp; 查找FCKConfig.ToolbarSets["Default"]，这里有很多按钮，下面我们将对他们详细介绍<br><font style="BACKGROUND-COLOR: #ffffcc" color=#ff6600>&nbsp;&nbsp; EditSource 显示HTML源代码 StrikeThrough 删除线 <br>&nbsp;&nbsp; Save 保存 Subscript 下标 <br>&nbsp;&nbsp; NewPage 新建空白页面 Superscript 上标 <br>&nbsp;&nbsp; Preview 预览 JustifyLeft 左对齐 <br>&nbsp;&nbsp; Cut 剪切 JustifyCenter 居中对齐 <br>&nbsp;&nbsp; Copy 复制 JustifyRight 右对齐 <br>&nbsp;&nbsp; Paste 粘贴 JustifyFull 两端对齐 <br>&nbsp;&nbsp; PasteText 纯文本粘贴 InsertOrderedList 自动编号 <br>&nbsp;&nbsp; PasteWord 来自Word的粘贴 InsertUnorderedList 项目符号 <br>&nbsp;&nbsp; Print 打印 Outdent 减少缩进 <br>&nbsp;&nbsp; SpellCheck 拼写检查 Indent 增加缩进 <br>&nbsp;&nbsp; Find 查找 ShowTableBorders 显示表格线 <br>&nbsp;&nbsp; Replace 替换 ShowDetails 显示明细 <br>&nbsp;&nbsp; Undo 撤销 Form 添加Form动作 <br>&nbsp;&nbsp; Redo 还原 Checkbox 复选框 <br>&nbsp;&nbsp; SelectAll 全选 Radio 单选按钮 <br>&nbsp;&nbsp; RemoveFormat 去除格式 Input 单行文本框 <br>&nbsp;&nbsp; Link 插入/编辑 链接 Textarea 滚动文本框 <br>&nbsp;&nbsp; RemoveLink 去除连接 Select 下拉菜单 <br>&nbsp;&nbsp; Anchor 锚点 Button 按钮 <br>&nbsp;&nbsp; Image 插入/编辑 图片 ImageButton 图片按钮 <br>&nbsp;&nbsp; Table 插入/编辑 表格 Hidden 隐藏 <br>&nbsp;&nbsp; Rule 插入水平线 Zoom 显示比例 <br>&nbsp;&nbsp; SpecialChar 插入特殊字符 FontStyleAdv 系统字体 <br>&nbsp;&nbsp; UniversalKey 软键盘 FontStyle 字体样式 <br>&nbsp;&nbsp; Smiley 插入表情符号 FontFormat 字体格式 <br>&nbsp;&nbsp; About 关于 Font 字体 <br>&nbsp;&nbsp; Bold 粗体 FontSize 字体大小 <br>&nbsp;&nbsp; Italic 斜体 TextColor 文字颜色 <br>&nbsp;&nbsp; Underline 下划线 BGColor 背景色 </font></p>
            <p>这个默认的是包含了所有的工具按钮，不过到我们具体要用的时候，有的按钮并不需要，而且还影响速度。那么我们可以将我们不需要的按钮给删了。下面是我的配置，给大家一个参考，当然你可以根据你的喜好。</p>
            <p><font style="BACKGROUND-COLOR: #ffffcc" color=#ff6600>FCKconfig.ToolbarSets["Default"] = [ <br>['EditSource','Save','NewPage','Preview','-','Cut','Copy','Paste','PasteText','-','Find','Replace','-','Undo','Redo','-','SelectAll','-','Link','RemoveLink','-','Image','Table','Rule','SpecialChar','Smiley'] , <br>['Bold','Italic','Underline','-','JustifyLeft','JustifyCenter','JustifyRight','-','InsertOrderedList','InsertUnorderedList','-','Form','Checkbox','Radio','Input','Textarea','Select','Button','-','FontStyleAdv','TextColor'] ] ; </font></p>
            <p>如果在前台给用户回复一写帖子的话，还是没必要要上面的，这时你可以在加一个：<br><font style="BACKGROUND-COLOR: #ffffcc">FCKConfig.ToolbarSets["Basic"] = [<br>['Bold','Italic','-','OrderedList','UnorderedList','-','Link','Unlink','-','About']<br>] ;</font><br>这样的话，你在前台调用的时候就要用$FCKeditor-&gt;ToolbarSet='Basic',不能在为"Default"了。</p>
            <p>(2)：语言的配置<br>查找FCKConfig.DefaultLanguage将它设置为'zh-cn'.</p>
            <p>(3):脚本语言的设置<br>查找var _FileBrowserLanguage和var _QuickUploadLanguage将他们设置为'php', 默认是'asp',如果这里不设置的话，图片将不能上传，这点很重要。当时我在用<u><strong><font color=#ff0000>FCKeditor</font></strong></u>由于没配置这个，不能上传图片，而我同寝室的用asp能上传图片，让我烦恼了好多天，最后终于找到是这个原因。<br>2:图片上传的配置<br>打开文件<font color=#ff0000>FCKeditor/editor/filemanager/browser/default/connectors/php/config.php</font></p>
            <p><font style="BACKGROUND-COLOR: #ffffcc">查找$Config['Enabled']，将它设置为'true'<br>查找$Config['UserFilesPath']，将它设置图片的目录，这个目录是相对于主目录的 //例如：我写了一个blog，就可以设置为/blog/upload/<br>打开文件FCKeditor/editor/filemanager/upload/php/config.php<br>查找$Config['Enabled']，将它设置为'true'<br>查找$Config['UseFileType']，将它设置上传文件的目录，最好与上面的图片目录相同<br></font><br>好了，现在所有的配置都已经完成了，现在你要做的只是删除一些不必要的文件了<br>只要包含'_'的目录名和文件名都可以删除，当然你用的是php，其他语言的一些目录也都可以删除，这样就减小了文件的大小.</p>
            </div>
            </div>
            </div>
            </td>
        </tr>
    </tbody>
</table>
<img src ="http://www.phpweblog.net/fuyongjie/aggbug/3937.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.phpweblog.net/fuyongjie/" target="_blank">bestmost</a> 2008-05-28 11:06 <a href="http://www.phpweblog.net/fuyongjie/archive/2008/05/28/3937.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>fckeditor php使用配置</title><link>http://www.phpweblog.net/fuyongjie/archive/2008/05/28/3935.html</link><dc:creator>bestmost</dc:creator><author>bestmost</author><pubDate>Wed, 28 May 2008 02:35:00 GMT</pubDate><guid>http://www.phpweblog.net/fuyongjie/archive/2008/05/28/3935.html</guid><wfw:comment>http://www.phpweblog.net/fuyongjie/comments/3935.html</wfw:comment><comments>http://www.phpweblog.net/fuyongjie/archive/2008/05/28/3935.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.phpweblog.net/fuyongjie/comments/commentRss/3935.html</wfw:commentRss><trackback:ping>http://www.phpweblog.net/fuyongjie/services/trackbacks/3935.html</trackback:ping><description><![CDATA[
		<p>下载地址:<br /><a href="http://www.fckeditor.net/download" target="_blank">http://www.fckeditor.net/download</a><br />效果演示:<br /><a href="http://www.fckeditor.net/demo" target="_blank">http://www.fckeditor.net/demo</a></p>
		<p>一:修改文件上传语言为PHP    <br />    打开fckconfig.js    <br />    找到:<br /><font color="#0000ff"><font color="#000000">    </font>var _FileBrowserLanguage = 'asp'<br /><font color="#000000">    </font>var _QuickUploadLanguage = 'asp'</font>    <br />    改成:<br /><font color="#ff0000"><font color="#000000">    </font>var _FileBrowserLanguage = 'php'<br /><font color="#000000">    </font>var _QuickUploadLanguage = 'php'<br /></font></p>
		<p>二:启用PHP文件上传</p>
		<p>    1:启用FileBrowser:<br />        打开fckeditor/editor/filemanager/browser/default/connectors/php/config.php<br />        启用文件上传:</p>
		<p>        找到:<br />       <font color="#0000ff"> $Config['Enabled'] = false<br /></font></p>
		<p>        改成:<br />       <font color="#ff0000"> $Config['Enabled'] = true<br /></font></p>
		<p>        设置上传存放目录:</p>
		<p>        找到:<br />        <font color="#0000ff">$Config['UserFilesPath'] = '/userfiles/'</font><br />        改成:<br />       <font color="#ff0000"> $Config['UserFilesPath'] = '你自己的项目路径'<br /></font></p>
		<p>    2:启用QuickUpload<br />        打开fckeditor/editor/filemanager/upload/php/config.php<br />        启用文件上传:</p>
		<p>        找到:<br />        <font color="#0000ff">$Config['Enabled'] = false</font><br />        改成:<br />        <font color="#ff0000">$Config['Enabled'] = true<br /></font></p>
		<p>        设置上传存放目录:</p>
		<p>        找到:<br />        <font color="#0000ff">$Config['UserFilesPath'] = '/userfiles/'</font><br />        改成:<br />       <font color="#ff0000"> $Config['UserFilesPath'] = '你自己的项目路径'<br /></font></p>
		<p>
				<br />
				<br />使用实例</p>
		<div class="hl-surround">
				<div class="hl-main">
						<span style="COLOR: blue">&lt;?php</span>
						<span style="COLOR: gray">
								<br />
						</span>
						<span style="COLOR: #00008b">$fck</span>
						<span style="COLOR: gray"> = </span>
						<span style="COLOR: #00008b">$_POST</span>
						<span style="COLOR: olive">[</span>
						<span style="COLOR: #8b0000">"</span>
						<span style="COLOR: red">FCKeditor1</span>
						<span style="COLOR: #8b0000">"</span>
						<span style="COLOR: olive">]</span>
						<span style="COLOR: gray">;<br /></span>
						<span style="COLOR: green">if</span>
						<span style="COLOR: gray">
						</span>
						<span style="COLOR: olive">(</span>
						<span style="COLOR: #00008b">$fck</span>
						<span style="COLOR: gray"> != </span>
						<span style="COLOR: #8b0000">""</span>
						<span style="COLOR: olive">)</span>
						<span style="COLOR: gray">
								<br />
						</span>
						<span style="COLOR: olive">{</span>
						<span style="COLOR: gray">
								<br />
						</span>
						<span style="COLOR: green">echo</span>
						<span style="COLOR: gray">
						</span>
						<span style="COLOR: blue">htmlspecialchars</span>
						<span style="COLOR: olive">(</span>
						<span style="COLOR: #00008b">$fck</span>
						<span style="COLOR: olive">)</span>
						<span style="COLOR: gray">;<br /></span>
						<span style="COLOR: olive">}</span>
						<span style="COLOR: gray">
								<br />
						</span>
						<span style="COLOR: blue">?&gt;</span>
						<span style="COLOR: gray">
								<br />
								<br />&lt;html&gt;<br />&lt;head&gt;<br />&lt;title&gt;fck测试&lt;/title&gt;<br />&lt;/head&gt;<br />&lt;body&gt;<br />&lt;form action="index.php" method="POST"&gt;<br /></span>
						<span style="COLOR: blue">&lt;?php</span>
						<span style="COLOR: gray">
								<br />
						</span>
						<span style="COLOR: green">include</span>
						<span style="COLOR: olive">(</span>
						<span style="COLOR: #8b0000">"</span>
						<span style="COLOR: red">fckeditor/fckeditor.php</span>
						<span style="COLOR: #8b0000">"</span>
						<span style="COLOR: olive">)</span>
						<span style="COLOR: gray"> ; </span>
						<span style="COLOR: #ffa500">//加载文件</span>
						<span style="COLOR: gray">
								<br />
						</span>
						<span style="COLOR: #00008b">$oFCKeditor</span>
						<span style="COLOR: gray"> = </span>
						<span style="COLOR: green">new</span>
						<span style="COLOR: gray">
						</span>
						<span style="COLOR: blue">FCKeditor</span>
						<span style="COLOR: olive">(</span>
						<span style="COLOR: #8b0000">'</span>
						<span style="COLOR: red">FCKeditor1</span>
						<span style="COLOR: #8b0000">'</span>
						<span style="COLOR: olive">)</span>
						<span style="COLOR: gray"> ; </span>
						<span style="COLOR: #ffa500">//创建一个FCKeditor对象 ID为FCKeditor1</span>
						<span style="COLOR: gray">
								<br />
						</span>
						<span style="COLOR: #00008b">$oFCKeditor</span>
						<span style="COLOR: gray">-&gt;</span>
						<span style="COLOR: blue">BasePath</span>
						<span style="COLOR: gray"> = </span>
						<span style="COLOR: #8b0000">"</span>
						<span style="COLOR: red">/fck/fckeditor/</span>
						<span style="COLOR: #8b0000">"</span>
						<span style="COLOR: gray"> ; </span>
						<span style="COLOR: #ffa500">//设置FCKeditor路径</span>
						<span style="COLOR: gray">
								<br />
						</span>
						<span style="COLOR: #00008b">$oFCKeditor</span>
						<span style="COLOR: gray">-&gt;</span>
						<span style="COLOR: blue">Value</span>
						<span style="COLOR: gray"> = </span>
						<span style="COLOR: #8b0000">''</span>
						<span style="COLOR: gray"> ; </span>
						<span style="COLOR: #ffa500">//设置默认值</span>
						<span style="COLOR: gray">
								<br />
						</span>
						<span style="COLOR: #00008b">$oFCKeditor</span>
						<span style="COLOR: gray">-&gt;</span>
						<span style="COLOR: blue">Create</span>
						<span style="COLOR: olive">()</span>
						<span style="COLOR: gray"> ; </span>
						<span style="COLOR: #ffa500">//创建。注意：若用到模板（如smarty）则$fck = $oFCKeditor-&gt;CreateHtml();然后把$fck抛给模板</span>
						<span style="COLOR: gray">
								<br />
						</span>
						<span style="COLOR: blue">?&gt;</span>
						<span style="COLOR: gray">
								<br />&lt;input type="submit" value="提交"&gt;<br />&lt;/form&gt;<br />&lt;/body&gt;<br />&lt;/html&gt;<br /><br /><font style="COLOR: #0000ff" color="#000000">JS用alert( FCKeditorAPI.GetInstance('FCKeditor1').GetXHTML( true ))得到FCKeditor1的值；<br />PHP用$_POST['FCKeditor1']得到FCKeditor1的值。<br /><br /><br /></font></span>
				</div>
		</div>
<img src ="http://www.phpweblog.net/fuyongjie/aggbug/3935.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.phpweblog.net/fuyongjie/" target="_blank">bestmost</a> 2008-05-28 10:35 <a href="http://www.phpweblog.net/fuyongjie/archive/2008/05/28/3935.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>FCKeditor的PHP配置,超级无敌简单</title><link>http://www.phpweblog.net/fuyongjie/archive/2008/05/28/3934.html</link><dc:creator>bestmost</dc:creator><author>bestmost</author><pubDate>Wed, 28 May 2008 02:31:00 GMT</pubDate><guid>http://www.phpweblog.net/fuyongjie/archive/2008/05/28/3934.html</guid><wfw:comment>http://www.phpweblog.net/fuyongjie/comments/3934.html</wfw:comment><comments>http://www.phpweblog.net/fuyongjie/archive/2008/05/28/3934.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.phpweblog.net/fuyongjie/comments/commentRss/3934.html</wfw:commentRss><trackback:ping>http://www.phpweblog.net/fuyongjie/services/trackbacks/3934.html</trackback:ping><description><![CDATA[<p>说起 这个，更是郁闷，网上找了N篇资料，那是越看越迷糊啊，最后还是自己看代码搞定的。为了方便日后学习也小记一下吧。<br><br>1、下载FCKeditor 多国语言版<br><br>2、解压后为文件夹减肥：<br><br>删除/FCKeditor/目录下除fckconfig.js, fckeditor.js, fckstyles.xml, fcktemplates.xml,fckeditor.php五个文件以外的所有文件<br>删除目录/editor/_source,_testcases(基本上，所有_开头的文件夹或文件都是可选的),<br>删除/editor/filemanager/browser/default/connectors/下除PHP目录的所有目录<br>删除/editor/filemanager/upload/下的除PHP目录的所有目录<br>删除/editor/lang/下的除了 en.js, zh.js, zh-cn.js三个文件的所有文件<br>3.<br>打开/FCKeditor/fckconfig.js<br>修改<br><span style="COLOR: red">var FCKConfig.DefaultLanguage = 'zh-cn' ;<br>var _FileBrowserLanguage&nbsp; = 'php' ;<br>var _QuickUploadLanguage&nbsp; = 'php' ;<br></span>要开启文件上传的话，还需要配置FCKeditor\editor\filemanager\upload\php\config.php以及\ FCKeditor\editor\filemanager\browser\default\connectors\php\config.php<br>(上传中文名文件会乱码)<br><br>4.调用方法<br>将FCKeditor放在网站根目录<br>在PHP文件里面，包含/FCKeditor/fckeditor.php文件<br><span style="COLOR: #800080">//包含fckeditor类<br>include("../FCKeditor/fckeditor.php") ;<br>//设置编辑器路径<br>$sBasePath = "/FCKeditor/";;//这个路径一定要和上面那个引入路径一致，否则会报错:找不到fckeditor.html页面</span><span style="COLOR: #800080"><br>//创建一个Fckeditor，表单的名称为ipaddr<br>$oFCKeditor = new FCKeditor('ipaddr') ;//ipaddr即为这个标签的name，可以用$_POST['ipaddr']获得编辑器的内容<br>$oFCKeditor-&gt;BasePath&nbsp; = $sBasePath ;<br>//设置表单初始值<br>$oFCKeditor-&gt;Value&nbsp; = 'This is some &lt;strong&gt;sample text&lt;/strong&gt;' ;<br>$oFCKeditor-&gt;Create() ;//<font color=#ffa500>注意：若用到模板（如smarty）则$fck = $oFCKeditor-&gt;CreateHtml();然后把$fck抛给模板</font></span><br><br><span style="COLOR: #800080">//还可设置<br>$oFCKeditor-&gt;Width<br>$oFCKeditor-&gt;Height<br>$oFCKeditor-&gt;ToolbarSet<br></span><br>5.定制<br>a.定制调用路径<br>直接将FCKeditor目录改为editor/，并且在调用的时候指定根路径为/editor/。<br>b.定制风格<br>可以通过修改editor\skins目录下的Skin来定制风格，主要是修改CSS。<br>c.定制toolbar<br><br>在fckconfig.js中，默认定制好了Default,Basic两种toolbar，你也可以根据格式定制自己的toolbar，并且在php中使用$oFCKeditor-&gt;ToolbarSet=toolbarname调用<br><br>d.定制字体<br>将fckconfig.js里面的FCKConfig.FontNames字体列表前面加上：<br>宋体;黑体;隶书;楷体_GB2312;<br>(注意保存为UTF8格式)<br><br>e.关闭文件上传<br>i. 将fckconfig.js里面的FCKConfig.LinkBrowser,FCKConfig.ImageBrowser, FCKConfig.FlashBrowser,FCKConfig.LinkUpload,FCKConfig.ImageUpload,FCKConfig.FlashUpload 设置为false.<br>ii.直接将filemanager里面的php文件删降<br>iii.定制toolbars<br>最重要的一点，你需要更改filemanager下面的php文件，只有认证的用户才可以访问。<br><br>f.注意事项：请用Editplus之类的编辑器编辑配置文件，注意保存格式为utf8. </p>
<p class="right articalinfo"><span id=Post.ascx_ViewPost_PreviousAndNextEntriesDown>
<h3><a href="http://blog.csdn.net/phphot/archive/2008/04/10/2276286.aspx"></a></h3>
</span><script type=text/javascript>document.write("<img src=http://counter.csdn.net/pv.aspx?id=24 border=0 width=0 height=0>");</script><img height=0 src="http://counter.csdn.net/pv.aspx?id=24" width=0 border=0>
<p>&nbsp;</p>
<img src ="http://www.phpweblog.net/fuyongjie/aggbug/3934.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.phpweblog.net/fuyongjie/" target="_blank">bestmost</a> 2008-05-28 10:31 <a href="http://www.phpweblog.net/fuyongjie/archive/2008/05/28/3934.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Web开发中的字符集问题和解决方案(完全版)</title><link>http://www.phpweblog.net/fuyongjie/archive/2008/05/24/3804.html</link><dc:creator>bestmost</dc:creator><author>bestmost</author><pubDate>Sat, 24 May 2008 08:16:00 GMT</pubDate><guid>http://www.phpweblog.net/fuyongjie/archive/2008/05/24/3804.html</guid><wfw:comment>http://www.phpweblog.net/fuyongjie/comments/3804.html</wfw:comment><comments>http://www.phpweblog.net/fuyongjie/archive/2008/05/24/3804.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.phpweblog.net/fuyongjie/comments/commentRss/3804.html</wfw:commentRss><trackback:ping>http://www.phpweblog.net/fuyongjie/services/trackbacks/3804.html</trackback:ping><description><![CDATA[<h3><a href="http://xombat.javaeye.com/blog/88888"></a>&nbsp;</h3>
<strong>关键字: php</strong>
<div>
<p><font size=2><span>很多人在开发网站开始阶段没有注意到字符集统一的重要性，因此开发的网站不是数据库中存有乱码就是</span><span><font face=Verdana>web</font></span><span>页面显示为乱码。现以</span><span><font face=Verdana>web</font></span><span>开发中的字符集为主体讨论在个人和团队</span><span><font face=Verdana>web</font></span><span>开发中需要注意的问题，和相应的解决方法。</span></font></p>
<p><font size=2><strong><span><font face=Verdana>1. </font></span></strong><strong><span>常见问题的解决</span></strong></font></p>
<p><span><font size=2>比如我在网站开发阶段就遇到两个严重的问题：</font></span></p>
<p><font size=2><span>我使用的是</span><span><font face=Verdana>Zend studio</font></span><span>的开发工具，保存代码时也是默认保存的，没有注意到字符集的问题，开始一切正常，但是当我想在页面中添加</span><span><font face=Verdana>&#8217;&#169;&#8217;</font></span><span>这个符号的时候，网页不能正常显示。后来发现，</span><span><font face=Verdana>zend </font></span><span>默认的保存编码是</span><span><font face=Verdana>gb2321</font></span><span>编码，而这个编码中不能表示以上那个字符，要显示那个字符有两种方式，一种是使用</span><span><font face=Verdana>php</font></span><span>中的图形函数，将</span><span><font face=Verdana>copyright</font></span><span>字符转换为图形显示在网页上。第二种方法是将网站格式完全转化为</span><span><font face=Verdana>utf-8</font></span><span>编码。我采用的是后者，将全部页面保存为</span><span><font face=Verdana>utf-8</font></span><span>格式，然后在</span><span><font face=Verdana>content-type</font></span><span>中将</span><span><font face=Verdana>charset=</font></span><span>转换为</span><span><font face=Verdana>utf-8;</font></span></font></p>
<p><span><font face=Verdana size=2>&nbsp;</font></span></p>
<p><font size=2><span>第二个严重的问题是数据库的乱码问题。再将文章存入数据库中后，使用</span><span><font face=Verdana>phpmyadmin</font></span><span>查看其中数据显示的也全部是乱码，起初没有对这个完全正视起来，因为在</span><span><font face=Verdana>php</font></span><span>使用其中数据时没有出现异常，在网页中显示正常。但是这本就是个严重的隐患，因此今天想办法解决了，解决方法使用的是很笨的方法，将数据库中的数据读出来，存入表中，然后写一个安装文件</span><span><font face=Verdana>(</font></span><span>使用</span><span><font face=Verdana>php)</font></span><span>，再连接数据库后，添加一段代码，效果如下：</span></font></p>
<p><span><font face=Verdana size=2>$conn=new mysqli(hostname,username,passwd,dbname);</font></span></p>
<p><span><font face=Verdana size=2>$conn-&gt;query(&#8216;set names \&#8217;utf8\&#8217;);</font></span></p>
<p><font size=2><span>这样在将</span><span><font face=Verdana>php</font></span><span>的安装文件中的数据写入数据库时就不会出现编码不一致的问题。在</span><span><font face=Verdana>phpMyadmin</font></span><span>中也能正常显示了。</span></font></p>
<p><span><font face=Verdana size=2>&nbsp;</font></span></p>
<p><span><font face=Verdana size=2>&nbsp;</font></span></p>
<p><font size=2><strong><span><font face=Verdana>2.</font></span></strong><strong><span>原理介绍</span></strong></font></p>
<p><font size=2><strong><span><font face=Verdana>(</font></span></strong><strong><span>摘自阿强的</span><span><font face=Verdana>blog:</font></span></strong><span><font face=Verdana> <strong>http://www.phpchina.com/10458/viewspace_4782.html)</strong></font></span></font></p>
<div>
<p><strong>1. Collations<br></strong><font color=#000000>Collations翻成中文是&#8220;校验&#8221;，在网页开发的过程中，这个词汇，只在Mysql里使用，主要作用是指导Mysql对字符的比较，比如， ASCII字符集里，Collations规定了a小于b，a等于a，以及a是否等于A之类的。通常，大家基本可以忽略Collations的存在，因为每个字符集都有一个默认的Collations，通常，使用默认的Collations就可以了。</font><span>以字节为编码单元，没有字节序的问题。</span><span><font face=Verdana>UTF-16</font></span><span>以两个字节为编码单元，在解释一个</span><span><font face=Verdana>UTF-16</font></span><span>文本前，首先要弄清楚每个编码单元的字节序。例如收到一个</span><span><font face=Verdana>&#8220;</font></span><span>奎</span><span><font face=Verdana>&#8221;</font></span><span>的</span><span><font face=Verdana>Unicode</font></span><span>编码是</span><span><font face=Verdana>594E</font></span><span>，</span><span><font face=Verdana>&#8220;</font></span><span>乙</span><span><font face=Verdana>&#8221;</font></span><span>的</span><span><font face=Verdana>Unicode</font></span><span>编码是</span><span><font face=Verdana>4E59</font></span><span>。如果我们收到</span><span><font face=Verdana>UTF-16</font></span><span>字节流</span><span><font face=Verdana>&#8220;594E&#8221;</font></span><span>，那么这是</span><span><font face=Verdana>&#8220;</font></span><span>奎</span><span><font face=Verdana>&#8221;</font></span><span>还是</span><span><font face=Verdana>&#8220;</font></span><span>乙</span><span><font face=Verdana>&#8221;</font></span><span>？</span></p>
<p><strong>2.字符集</strong><br>与这对比的是，字符集是个更广的概念，即使是Windows下普通的文本文件，也渗及到字符集的问题。不同的字符集，规定了不同的字符的编码方式。一个 character set (字符集)是一组符号和编码，比如，ASCII字符集，包括的字符有：数字，大小写字母，分号、换行之类的符号，编码方式是用一个7bit表示一个字符（A的编码是65，b的编码是98）。ASCII只规定了英文字母的编码，非英文语言不能用ASCII编码表示，为此，不同的国家，都为自己的语言做了编码，比如，我们国家，就有GB2312编码。但每个国家之间的编码不同，也存在着一些跨平台的问题，为此，一些国际化标准组织，就制定了一些国际通用的编码，最常用的就是UTF8了。ASCII只对英文符号和英文字母做了编码，GB2312对英文符号，英文字母，汉字做了编码，UTF8对世界上所有的语言文字做了编码，所以，GB1212的字符包含了ASCII字符，UTF8包含了GB2312字符。由此可见，UTF8是所含最广字符的字符集，所以，在一些多语言的WEB系统中，一般用UTF8字符集（PHPMyAdmin使用UTF8编码）。<br>任何文本的存储，都渗及到字符集的概念。包括数据库，也包括普通的文本文件。<br>主要术语：<br>字符：汉字，英文字母，标点符号，拉丁文等等。<br>编码：将字符转换成计算机存储的格式，比如，A用65表示<br>字符集：一组字符以及对应的编码方式。<br></p>
<p><strong>a. Mysql的字符集</strong><br>Mysql目前支持多字符集，并且，支持在不同的字符集之间转换（便于移植和支持多语言）。<br>Mysql可以设置服务器级字符集、数据库级字符集、数据表级字符集、表列的字符集，实际上，最终使用字符集的地方是存储字符的列，比如，你设置 table1中col1列是字符类型，col1才用到了字符集，如果table1表的col2列是int类型，col2不使用字符集的概念。<br>服务器级字符集、数据库级字符集、数据表级字符集都是为列的字符集做默认选项的。<br>Mysql一定有一个字符集，可以通过启动时加参数指定，也可以编译时指定，也可以在配置文件里指定。Mysql服务器字符集，只是做为数据库级的默认值。创建数据库时，你可以指定字符集，如果没指定，就使用服务器的字符集。同理，创建表时，你可以指定表级的字符集，如果没指定，使用数据库的字符集做为表的字符集。创建列时，你可以指定某列的字符集，如果没指定，就使用表的字符集。<br>通常情况下，您只需设置服务器级的字符集，其它的数据库级，表级，以及列级的字符集，都继承自服务器级字符集。<br>由于UTF8是最广的字符集，所以，一般情况下，我们设置Mysql服务器级的字符集为UTF8！</p>
<p><strong>b. 普通文本的字符集问题</strong><br>任何文本的存储，都存在着字符集的问题，普通文本文件也不例外。<br>Windows2000+的系统中，打开记事本，&#8220;保存为&#8230;&#8221;对话框，就有一个选项，可以让你选择存储文本的编码方式。<br>通常情况下，大家都使用Windows2000+的系统，都使用默认的编码，所以，不会碰到字符集的问题。<br>Windows下，保存文本文件时，可以选择编码方式，但打开文本文件时，都是自动判断编码方式的。网上有一个用Windows2000+的记事本玩移动，联通的笑话，大家可以搜搜，就是因为Windows在打开文本文件时，编码判断错误引起的问题。<br>因为自动判断编码有时会错误，所以，有的文本文件，规定了如何识别自身所使用的编码。HTML文件就是一个这样的例子。&gt;<br>HTML是文本文件。存储HTML文件的时候，需要使用一个编码，并且，在HTML文件里，也使用HTML语法，指定了该文件所使用的编码（比如&lt; meta http-equiv="content-type" content="text/html; charset=UTF-8"&gt;）。如果HTML文件没有指定编码，则浏览器自动识别文件的编码。如果HTML指定了编码，则浏览器使用HTML指定的编码。<br>通常情况下，HTML文件指定的charset和HTML文件自身的编码是一致的，但也有不一致的情况，如果不一致，就会导致网页乱码(此处乱码，只和文本文件有关，和数据库无关。)使用专门的网页编辑工具（比如Dreamwave），会自动根据网页中的charset值来编码文件。<br></p>
<p><strong>c. php+mysql的字符集问题</strong><br>PHP最终生成的是文本文件，但他要取数据库里的文本，或将文本存进数据库<br>由于Mysql支持多字符集，默认情况下，Mysql不知道PHP发给他的是什么编码的字符，所以，Mysql要求客户端（PHP）告诉他存取的字符集是什么。&nbsp;&nbsp; <br>PHP通过设置character_set_client，告诉Mysql，PHP存进数据库的是什么编码方式。<br>PHP通过设置character_set_results，告诉Mysql，PHP需要取什么样编码的数据。<br>PHP通过设置character_set_connection，告诉Mysql，PHP查询中的文本，使用什么编码。<br>MYSQL使用设置的编码方式存储文本。&nbsp; <br>假设Mysql使用setserver来存储文本，PHP的character_set_client是setclient，PHP的character_set_results是setresult。那么，Mysql将PHP发来的文本，从setclient编码方式，转换成 setserver编码方式，再存入数据库，如果PHP取文本，Mysql将文本从setserver转换成setresult，再发送给PHP。<br>PHP文件（最终生成的HTML文件）本身有个编码，如果Mysql传过来的编码，与PHP文件自身的编码不同，那么，整个网页，必然乱码。所以，PHP一般将自己的编码方式，告诉Mysql。<br>要保证不乱码，就必须将三个编码统一：一是网页自身的编码，二是HTML里指定的编码，三是PHP告诉Mysql的编码(包括character_set_client和character_set_results)。<br>第一和第二个编码，如果使用DW之类的编辑器写的网页，通常是一致的，但用记事本写的网页，有可能不一致。（<em>这里我感觉不太准确，需要讨论一下）</em><br>第三个编码，需要手工通知Mysql。这步可以通过在PHP里使用mysql_query(&#8220;set names characterX&#8221;)来实现。<br></p>
<p><strong>d.字符集的转换问题</strong><br>如果小字集转换成大字符集，不会丢失数据，但大字集，转换成小字集，可能会丢失数据。<br>比如，UTF8里有的字符，GB2312不一定有，所以，从UTF8转换到GB2312可能会丢失一些字符。<br>但有种情况例外，先从GB2312转成UTF8，再从UTF8转成GB2312，这种情况是不会丢数据的，因为，刚开始转换的文本，都是GB2312里的字符，所以，整个过程都是GB2312的字符在转换，不会丢失。<br>正因为UTF8能容纳世界上的所有字符，所以，数据库一般使用UTF8编码。这使得，任何字符都可以存进UTF8编码的数据库。 </p>
<p><strong>e. PHPMyAdmin乱码的问题</strong><br>PHPMyAdmin支持多国语言，这就必定要求HTML页面使用UTF8编码。<br>HTML页面使用UTF8编码，这就必定要求PHPMyAdmin连接Mysql时，character_set_client和character_set_results使用UTF8编码。<br>当前情况下，PHP连接Mysql只能是使用set names(或其它几个语句)来通知Mysql的编码方式，如果没有显式的声明编码方式，都将使用latin1编码。一般的程序，都没有显式声明 character_set_client变量，所以，都是将gb2312文本，按latin1编码方式存在数据库，PHPMyAdmin再用utf8格式读取，肯定是乱码的。<br>如果PHP程序按正确的编码存入数据库，肯定是没有问题的。所以，需要修改的不是PHPMyAdmin.（虽然有时修改PHPMyAdmin可以解决乱码问题，但这不是问题的根本）</p>
</div>
<p><strong>补充：</strong><br>（参考：<a href="http://blog.csdn.net/fmddlmyy/archive/2005/05/04/372148.aspx">http://blog.csdn.net/fmddlmyy/archive/2005/05/04/372148.aspx</a>）</p>
<p>UTF-8以字节为编码单元，没有字节序的问题。UTF-16以两个字节为编码单元，在解释一个UTF-16文本前，首先要弄清楚每个编码单元的字节序。例如收到一个&#8220;奎&#8221;的Unicode编码是594E，&#8220;乙&#8221;的Unicode编码是4E59。如果我们收到UTF-16字节流&#8220;594E&#8221;，那么这是&#8220;奎&#8221;还是&#8220;乙&#8221;？<font size=2><span><font face=Verdana>Unicode</font></span><span>规范中推荐的标记字节顺序的方法是</span><span><font face=Verdana>BOM</font></span><span>。</span><span><font face=Verdana>BOM</font></span><span>不是</span><span><font face=Verdana>&#8220;Bill Of Material&#8221;</font></span><span>的</span><span><font face=Verdana>BOM</font></span><span>表，而是</span><span><font face=Verdana>Byte Order Mark</font></span><span>。</span><span><font face=Verdana>BOM</font></span><span>是一个有点小聪明的想法：</span></font></p>
<p><font size=2><span>在</span><span><font face=Verdana>UCS</font></span><span>编码中有一个叫做</span><span><font face=Verdana>"ZERO WIDTH NO-BREAK SPACE"</font></span><span>的字符，它的编码是</span><span><font face=Verdana>FEFF</font></span><span>。而</span><span><font face=Verdana>FFFE</font></span><span>在</span><span><font face=Verdana>UCS</font></span><span>中是不存在的字符，所以不应该出现在实际传输中。</span><span><font face=Verdana>UCS</font></span><span>规范建议我们在传输字节流前，先传输字符</span><span><font face=Verdana>"ZERO WIDTH NO-BREAK SPACE"</font></span><span>。</span></font></p>
<p><font size=2><span>这样如果接收者收到</span><span><font face=Verdana>FEFF</font></span><span>，就表明这个字节流是</span><span><font face=Verdana>Big-Endian</font></span><span>的；如果收到</span><span><font face=Verdana>FFFE</font></span><span>，就表明这个字节流是</span><span><font face=Verdana>Little-Endian</font></span><span>的。因此字符</span><span><font face=Verdana>"ZERO WIDTH NO-BREAK SPACE"</font></span><span>又被称作</span><span><font face=Verdana>BOM</font></span><span>。</span></font></p>
<p><font size=2><span><font face=Verdana>UTF-8</font></span><span>不需要</span><span><font face=Verdana>BOM</font></span><span>来表明字节顺序，但可以用</span><span><font face=Verdana>BOM</font></span><span>来表明编码方式。字符</span><span><font face=Verdana>"ZERO WIDTH NO-BREAK SPACE"</font></span><span>的</span><span><font face=Verdana>UTF-8</font></span><span>编码是</span><span><font face=Verdana>EF BB BF</font></span><span>（读者可以用我们前面介绍的编码方法验证一下）。所以如果接收者收到以</span><span><font face=Verdana>EF BB BF</font></span><span>开头的字节流，就知道这是</span><span><font face=Verdana>UTF-8</font></span><span>编码了。</span></font></p>
<p><font size=2><span><font face=Verdana>Windows</font></span><span>就是使用</span><span><font face=Verdana>BOM</font></span><span>来标记文本文件的编码方式的。</span></font></p>
<p><span><font face=Verdana>&nbsp;</font></span></p>
<p><font size=2><strong><span>讨论：</span></strong><strong></strong></font></p>
<p><font size=2><span>第一和第二个编码，如果使用</span><span>DW</span><span>之类的编辑器写的网页，通常是一致的，但用记事本写的网页，有可能不一致。</span></font></p>
<p><font size=2><span>如果在</span><span>dw</span><span>中选择了：&#8220;包括</span><span>Unicode</span><span>签名</span><span>(Bom)</span><span>&#8221;那么，保存的和记事本保存的是一样的，都是前面多出三个字节。这三个字节在网页显示时有特殊的作用，如果这样保存一个网页，在</span><span>html</span><span>中不需要指定</span><span>utf-8</span><span>格式，浏览器就自动选用</span><span>utf8</span><span>编码，而且浏览者不能自己修改成其他的编码格式。如此保存在开发中可能是一个既保险又提高效率的好方法，但是考虑到他和其他很多开发工具的不兼容（</span><span>zend</span><span>中没有这个功能，而且显示代码的时候，将前三个字符显示为点，在</span><span>editplus</span><span>中全部显示为乱码。所以不推荐选用</span><span>bom</span><span>。</span></font></p>
<p><span><font face=Verdana size=2>&nbsp;</font></span></p>
<p><font size=2><strong><span><font face=Verdana>3.</font></span></strong><strong><span>团队中的字符集的同步</span></strong></font><span><font face=Verdana size=2>&nbsp;</font></span><span><font face=Verdana size=2>&nbsp;</font></span></p>
<p><font size=2><span>我们推荐使用</span><span><font face=Verdana>utf-8</font></span><span>字符集，因为此字符集将所有字符都包含了进去，因此以后不会再担心字符表示不了的问题。</span></font></p>
<p><font size=2><span>但是如何在团队开发重视全部参与编码的成员都保证自己的字符是</span><span><font face=Verdana>utf-8</font></span><span>编码的？我们需要考虑这些方面：开发工具的默认编码（也就是网页的编码），</span><span><font face=Verdana>html</font></span><span>中指定的编码，和</span><span><font face=Verdana>php</font></span><span>指定的编码，数据库的编码。</span></font></p>
<p><span><font face=Verdana size=2></font></span></p>
<p><font size=2><span>对于<strong>开发工具默认的编码</strong>，需要考虑美工的开发工具和编程人员的开发工具，最普遍的为</span><span><font face=Verdana>dreamweaver</font></span><span>和</span><span><font face=Verdana>zend studio</font></span><span>，最一劳永逸的方式不是在每次保存时指定编码格式，而是在编程工具的选项或者是首选项中指定字符集编码，对于</span><span><font face=Verdana>dreamweaver</font></span><span>，打开</span><span><font face=Verdana>&#8221;</font></span><span>编辑</span><span><font face=Verdana>&#8221;</font></span><span>菜单</span><span><font face=Verdana>,</font></span><span>选择</span><span><font face=Verdana>&#8220;</font></span><span>首选参数</span><span><font face=Verdana>&#8221;</font></span><span>（或</span><span><font face=Verdana>Ctrl+U</font></span><span>），选择</span><span><font face=Verdana>&#8220;</font></span><span>新建文档</span><span><font face=Verdana>&#8221;</font></span><span>分类</span><span><font face=Verdana>(</font></span><span>如下</span><span><font face=Verdana>)</font></span><span>，在默认编码中选择如图的</span><span><font face=Verdana>utf-8,</font></span><span>然后将下面的&#8220;当打开未指定的</span><span><font face=Verdana>&#8230;</font></span><span>&#8221;，在</span><span><font face=Verdana>unicode</font></span><span>标准化表单中选择</span><span><font face=Verdana>c</font></span><span>类，<strong>但是不要选择下面的&#8220;包括</strong></span><strong><span><font face=Verdana>unicode</font></span></strong><strong><span>签名&#8221;，</span></strong><span>具体问什么，上面已经说了。这样在每次保存的时候，就默认保存为</span><span><font face=Verdana>utf</font></span><span>编码。</span><strong></strong></font></p>
<p><span><a href="http://www.cnbruce.com/blog/uploadfile/GIF/2006-7/28-16727-dw-utf-8.gif"><span><font size=2></font></span></a></span></p>
<p><font size=2><span>对于</span><span><font face=Verdana>php</font></span><span>开发人员，使用</span><span><font face=Verdana>zend ,</font></span><span>选择</span><span><font face=Verdana>tool-&gt;preference&#8230;</font></span><span>进入</span><span><font face=Verdana>preference</font></span><span>对话框，选择</span><span><font face=Verdana>Desktop</font></span><span>标签，然后在</span><span><font face=Verdana>Encoding</font></span><span>文本框中选择</span><span><font face=Verdana>UTF-8.</font></span><span>在进入</span><span><font face=Verdana>Debug</font></span><span>标签，从中选定</span><span><font face=Verdana>define server out put encoding ,</font></span><span>然后在后面的文本框中选择</span><span><font face=Verdana>utf-8</font></span><span>（这一步主要是为了在</span><span><font face=Verdana>zend</font></span><span>开发环境中调试而用）</span></font></p>
<p><span><font face=Verdana size=2></font></span></p>
<p><font size=2><strong><span><font face=Verdana>html</font></span><span>中指定的编码</span></strong></font></p>
<p><font size=2><span>保存的文本是</span><span><font face=Verdana>utf-8</font></span><span>的还不够，我们还需要在</span><span><font face=Verdana>html</font></span><span>中指定编码类型，具体有两种方法，可以任选其一：</span></font><font size=2><span><font face=Verdana></font></span></font></p>
<p><font size=2><span><font face=Verdana>Html</font></span><span>代码方法：在</span><span><font face=Verdana></font></span><span>标签中加入这一行：</span></font><span><font size=2> </font></span></p>
<p><font size=2><span><font face=Verdana>Php</font></span><span>代码方法：在输出任何数据之前，加入这行代码：</span><span><font face=Verdana>header(&#8216;content-type:text/html;charset=utf<st1:chmetcnv tcsc="0" numbertype="1" negative="True" hasspace="False" sourcevalue="8" unitname="&#8217;" w:st="on">-8&#8217;</st1:chmetcnv>);</font></span></font></p>
<p><span><font size=2>两种方法任选其一。</font></span><span><font face=Verdana size=2>&nbsp;</font></span></p>
<p><font size=2><strong><span><font face=Verdana>Php</font></span><span>指定编码：</span></strong></font></p>
<p><font size=2><span>需要在连接好数据库后，加入如下一行代码，</span><span><font face=Verdana> </font></span></font></p>
<p><span><font face=Verdana size=2>$conn-&gt;query(&#8216;set names \&#8217;utf8\&#8217;);</font></span></p>
<p><span><font size=2>具体见第一部分问题解决。</font></span><span><font face=Verdana size=2>&nbsp;</font></span></p>
<p><span><font size=2><strong>数据库的编码：</strong></font></span></p>
<p><font size=2><span>这里数据库的编码，指的是数据库中默认的编码</span><span>。 </span><span>默认的编码方式使用</span><span><font face=Verdana>php</font></span><span>的函数可以查看</span><span><font face=Verdana>(</font></span><span>连接数据库后，</span><span><font face=Verdana>$charset=$conn-&gt;character_set()，也可以通过查看mysql系统变量来查看; $charset</font></span><span>就是编码类型的信息</span><span><font face=Verdana>)</font></span><span>。设定数据库的默认编码方式是在</span><span><font face=Verdana>mysql </font></span><span>程序文件的</span><span><font face=Verdana>my.ini</font></span><span>中修改如下的指令：</span></font></p>
<p><font size=2><span>将所有的都改为：</span><span><font face=Verdana>default-character-set=utf8</font></span></font></p>
<p><font size=2><span>在</span><span><font face=Verdana>mysqld</font></span><span>下面添加：</span><span><font face=Verdana>default-collation=utf8_general_ci</font></span><span>（其实这行不添加也可以，</span><span><font face=Verdana>utf-8</font></span><span>默认的就是这个）</span></font></p>
<p><font size=2><span>可以参阅：</span><span><a href="http://phpbb-tw.net/phpbb/viewtopic.php?t=41148&amp;highlight=&amp;"><font face=Verdana color=#800080>http://phpbb-tw.net/phpbb/viewtopic.php?t=41148&amp;highlight=&amp;</font></a></span></font></p>
<p><font size=2><span>但不要学着他将已经保存数据的表用</span><span><font face=Verdana>alter</font></span><span>进行转换。</span></font>&nbsp;</p>
<p><font size=2><span><strong>至此完。</strong></span><span><font face=Verdana> </font></span></font></p>
</div>
<img src ="http://www.phpweblog.net/fuyongjie/aggbug/3804.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.phpweblog.net/fuyongjie/" target="_blank">bestmost</a> 2008-05-24 16:16 <a href="http://www.phpweblog.net/fuyongjie/archive/2008/05/24/3804.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>谈谈Unicode编码，简要解释UCS、UTF、BMP、BOM等名词 </title><link>http://www.phpweblog.net/fuyongjie/archive/2008/05/21/3650.html</link><dc:creator>bestmost</dc:creator><author>bestmost</author><pubDate>Wed, 21 May 2008 05:29:00 GMT</pubDate><guid>http://www.phpweblog.net/fuyongjie/archive/2008/05/21/3650.html</guid><wfw:comment>http://www.phpweblog.net/fuyongjie/comments/3650.html</wfw:comment><comments>http://www.phpweblog.net/fuyongjie/archive/2008/05/21/3650.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.phpweblog.net/fuyongjie/comments/commentRss/3650.html</wfw:commentRss><trackback:ping>http://www.phpweblog.net/fuyongjie/services/trackbacks/3650.html</trackback:ping><description><![CDATA[&nbsp;谈谈Unicode编码，简要解释UCS、UTF、BMP、BOM等名词 选择自 fmddlmyy 的 Blog <br><br><br>这是一篇程序员写给程序员的趣味读物。所谓趣味是指可以比较轻松地了解一些原来不清楚的概念，增进知识，类似于打RPG游戏的升级。整理这篇文章的动机是两个问题： <br><br>问题一： <br>使用Windows记事本的&#8220;另存为&#8221;，可以在GBK、Unicode、Unicode big endian和UTF-8这几种编码方式间相互转换。同样是txt文件，Windows是怎样识别编码方式的呢？ <br><br>我 很早前就发现Unicode、Unicode big endian和UTF-8编码的txt文件的开头会多出几个字节，分别是FF、FE（Unicode）,FE、FF（Unicode big endian）,EF、BB、BF（UTF-8）。但这些标记是基于什么标准呢？ <br><br>问题二： <br>最近在网上看到一个 ConvertUTF.c，实现了UTF-32、UTF-16和UTF-8这三种编码方式的相互转换。对于Unicode(UCS2)、GBK、UTF- 8这些编码方式，我原来就了解。但这个程序让我有些糊涂，想不起来UTF-16和UCS2有什么关系。 <br>查了查相关资料，总算将这些问题弄清楚了，顺带也了解了一些Unicode的细节。写成一篇文章，送给有过类似疑问的朋友。本文在写作时尽量做到通俗易懂，但要求读者知道什么是字节，什么是十六进制。 <br><br>0、big endian和little endian <br>big endian和little endian是CPU处理多字节数的不同方式。例如&#8220;汉&#8221;字的Unicode编码是6C49。那么写到文件里时，究竟是将6C写在前面，还是将49写在前 面？如果将6C写在前面，就是big endian。还是将49写在前面，就是little endian。 <br><br>&#8220;endian&#8221;这个词出自《格列佛游记》。小人国的内战就源于吃鸡蛋时是究竟从大头(Big-Endian)敲开还是从小头(Little-Endian)敲开，由此曾发生过六次叛乱，其中一个皇帝送了命，另一个丢了王位。 <br><br>我们一般将endian翻译成&#8220;字节序&#8221;，将big endian和little endian称作&#8220;大尾&#8221;和&#8220;小尾&#8221;。 <br><br>1、字符编码、内码，顺带介绍汉字编码 <br>字符必须编码后才能被计算机处理。计算机使用的缺省编码方式就是计算机的内码。早期的计算机使用7位的ASCII编码，为了处理汉字，程序员设计了用于简体中文的GB2312和用于繁体中文的big5。 <br><br>GB2312(1980年)一共收录了7445个字符，包括6763个汉字和682个其它符号。汉字区的内码范围高字节从B0-F7，低字节从A1-FE，占用的码位是72*94=6768。其中有5个空位是D7FA-D7FE。 <br><br>GB2312 支持的汉字太少。1995年的汉字扩展规范GBK1.0收录了21886个符号，它分为汉字区和图形符号区。汉字区包括21003个字符。2000年的 GB18030是取代GBK1.0的正式国家标准。该标准收录了27484个汉字，同时还收录了藏文、蒙文、维吾尔文等主要的少数民族文字。现在的PC平 台必须支持GB18030，对嵌入式产品暂不作要求。所以手机、MP3一般只支持GB2312。 <br><br>从ASCII、GB2312、GBK 到GB18030，这些编码方法是向下兼容的，即同一个字符在这些方案中总是有相同的编码，后面的标准支持更多的字符。在这些编码中，英文和中文可以统一 地处理。区分中文编码的方法是高字节的最高位不为0。按照程序员的称呼，GB2312、GBK到GB18030都属于双字节字符集 (DBCS)。 <br><br>有的中文Windows的缺省内码还是GBK，可以通过GB18030升级包升级到GB18030。不过GB18030相对GBK增加的字符，普通人是很难用到的，通常我们还是用GBK指代中文Windows内码。 <br><br>这里还有一些细节： <br><br>GB2312的原文还是区位码，从区位码到内码，需要在高字节和低字节上分别加上A0。 <br><br>在DBCS中，GB内码的存储格式始终是big endian，即高位在前。 <br><br>GB2312 的两个字节的最高位都是1。但符合这个条件的码位只有128*128=16384个。所以GBK和GB18030的低字节最高位都可能不是1。不过这不影 响DBCS字符流的解析：在读取DBCS字符流时，只要遇到高位为1的字节，就可以将下两个字节作为一个双字节编码，而不用管低字节的高位是什么。 <br><br>2、Unicode、UCS和UTF <br>前面提到从ASCII、GB2312、GBK到GB18030的编码方法是向下兼容的。而Unicode只与ASCII兼容（更准确地说，是与ISO-8859-1兼容），与GB码不兼容。例如&#8220;汉&#8221;字的Unicode编码是6C49，而GB码是BABA。 <br><br>Unicode 也是一种字符编码方法，不过它是由国际组织设计，可以容纳全世界所有语言文字的编码方案。Unicode的学名是"Universal Multiple-Octet Coded Character Set"，简称为UCS。UCS可以看作是"Unicode Character Set"的缩写。 <br><br>根据维基百科全书(<a href="http://zh.wikipedia.org/wiki/" target=_blank><font color=#006bad>http://zh.wikipedia.org/wiki/</font></a>)的记载：历史上存在两个试图独立设计Unicode的组织，即国际标准化组织（ISO）和一个软件制造商的协会（unicode.org）。ISO开发了ISO 10646项目，Unicode协会开发了Unicode项目。 <br><br>在1991年前后，双方都认识到世界不需要两个不兼容的字符集。于是它们开始合并双方的工作成果，并为创立一个单一编码表而协同工作。从Unicode2.0开始，Unicode项目采用了与ISO 10646-1相同的字库和字码。 <br><br>目前两个项目仍都存在，并独立地公布各自的标准。Unicode协会现在的最新版本是2005年的Unicode 4.1.0。ISO的最新标准是10646-3:2003。 <br><br>UCS规定了怎么用多个字节表示各种文字。怎样传输这些编码，是由UTF(UCS Transformation Format)规范规定的，常见的UTF规范包括UTF-8、UTF-7、UTF-16。 <br><br>IETF 的RFC2781和RFC3629以RFC的一贯风格，清晰、明快又不失严谨地描述了UTF-16和UTF-8的编码方法。我总是记不得IETF是 Internet Engineering Task Force的缩写。但IETF负责维护的RFC是Internet上一切规范的基础。 <br><br>3、UCS-2、UCS-4、BMP <br><br>UCS有两种格式：UCS-2和UCS-4。顾名思义，UCS-2就是用两个字节编码，UCS-4就是用4个字节（实际上只用了31位，最高位必须为0）编码。下面让我们做一些简单的数学游戏： <br><br>UCS-2有2^16=65536个码位，UCS-4有2^31=2147483648个码位。 <br><br>UCS -4根据最高位为0的最高字节分成2^7=128个group。每个group再根据次高字节分为256个plane。每个plane根据第3个字节分为 256行 (rows)，每行包含256个cells。当然同一行的cells只是最后一个字节不同，其余都相同。 <br><br>group 0的plane 0被称作Basic Multilingual Plane, 即BMP。或者说UCS-4中，高两个字节为0的码位被称作BMP。 <br><br>将UCS-4的BMP去掉前面的两个零字节就得到了UCS-2。在UCS-2的两个字节前加上两个零字节，就得到了UCS-4的BMP。而目前的UCS-4规范中还没有任何字符被分配在BMP之外。 <br><br>4、UTF编码 <br><br>UTF-8就是以8位为单元对UCS进行编码。从UCS-2到UTF-8的编码方式如下： <br><br>UCS-2编码(16进制) UTF-8 字节流(二进制) <br>0000 - 007F 0xxxxxxx <br>0080 - 07FF 110xxxxx 10xxxxxx <br>0800 - FFFF 1110xxxx 10xxxxxx 10xxxxxx <br><br>例 如&#8220;汉&#8221;字的Unicode编码是6C49。6C49在0800-FFFF之间，所以肯定要用3字节模板了：1110xxxx 10xxxxxx 10xxxxxx。将6C49写成二进制是：0110 110001 001001， 用这个比特流依次代替模板中的x，得到：11100110 10110001 10001001，即E6 B1 89。 <br><br>读者可以用记事本测试一下我们的编码是否正确。 <br><br>UTF- 16以16位为单元对UCS进行编码。对于小于0x10000的UCS码，UTF-16编码就等于UCS码对应的16位无符号整数。对于不小于 0x10000的UCS码，定义了一个算法。不过由于实际使用的UCS2，或者UCS4的BMP必然小于0x10000，所以就目前而言，可以认为UTF -16和UCS-2基本相同。但UCS-2只是一个编码方案，UTF-16却要用于实际的传输，所以就不得不考虑字节序的问题。 <br><br>5、UTF的字节序和BOM <br>UTF -8以字节为编码单元，没有字节序的问题。UTF-16以两个字节为编码单元，在解释一个UTF-16文本前，首先要弄清楚每个编码单元的字节序。例如收 到一个&#8220;奎&#8221;的Unicode编码是594E，&#8220;乙&#8221;的Unicode编码是4E59。如果我们收到UTF-16字节流&#8220;594E&#8221;，那么这是&#8220;奎&#8221;还是 &#8220;乙&#8221;？ <br><br>Unicode规范中推荐的标记字节顺序的方法是BOM。BOM不是&#8220;Bill Of Material&#8221;的BOM表，而是Byte Order Mark。BOM是一个有点小聪明的想法： <br><br>在UCS 编码中有一个叫做"ZERO WIDTH NO-BREAK SPACE"的字符，它的编码是FEFF。而FFFE在UCS中是不存在的字符，所以不应该出现在实际传输中。UCS规范建议我们在传输字节流前，先传输 字符"ZERO WIDTH NO-BREAK SPACE"。 <br><br>这样如果接收者收到FEFF，就表明这个字节流是Big-Endian的；如果收到FFFE，就表明这个字节流是Little-Endian的。因此字符"ZERO WIDTH NO-BREAK SPACE"又被称作BOM。 <br><br>UTF -8不需要BOM来表明字节顺序，但可以用BOM来表明编码方式。字符"ZERO WIDTH NO-BREAK SPACE"的UTF-8编码是EF BB BF（读者可以用我们前面介绍的编码方法验证一下）。所以如果接收者收到以EF BB BF开头的字节流，就知道这是UTF-8编码了。 <br><br>Windows就是使用BOM来标记文本文件的编码方式的。 <br><br>6、进一步的参考资料 <br>本文主要参考的资料是 "Short overview of ISO-IEC 10646 and Unicode" (<a href="http://www.nada.kth.se/i18n/ucs/unicode-iso10646-oview.html" target=_blank><font color=#006bad>http://www.nada.kth.se/i18n/ucs/unicode-iso10646-oview.html</font></a>)。 <br><br>我还找了两篇看上去不错的资料，不过因为我开始的疑问都找到了答案，所以就没有看： <br><br>"Understanding Unicode A general introduction to the Unicode Standard" (<a href="http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&amp;item_id=IWS-Chapter04a" target=_blank><font color=#006bad>http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&amp;item_id=IWS-Chapter04a</font></a>) <br>"Character set encoding basics Understanding character set encodings and legacy encodings" (<a href="http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&amp;item_id=IWS-Chapter03" target=_blank><font color=#006bad>http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&amp;item_id=IWS-Chapter03</font></a>) <br>我写过UTF-8、UCS-2、GBK相互转换的软件包，包括使用Windows API和不使用Windows API的版本。以后有时间的话，我会整理一下放到我的个人主页上(<a href="http://fmddlmyy.home4u.china.com/" target=_blank><font color=#006bad>http://fmddlmyy.home4u.china.com/</font></a>)。 <br><br>我是想清楚所有问题后才开始写这篇文章的，原以为一会儿就能写好。没想到考虑措辞和查证细节花费了很长时间，竟然从下午1:30写到9:00。希望有读者能从中受益。 
<img src ="http://www.phpweblog.net/fuyongjie/aggbug/3650.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.phpweblog.net/fuyongjie/" target="_blank">bestmost</a> 2008-05-21 13:29 <a href="http://www.phpweblog.net/fuyongjie/archive/2008/05/21/3650.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>