﻿<?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>C++博客-斜树的空间-随笔分类-转载</title><link>http://www.cppblog.com/Viking/category/16542.html</link><description>集中精力，放弃一切的去做一件事情，只要尽力了，即使失败了，你也不会后悔！</description><language>zh-cn</language><lastBuildDate>Sun, 12 Feb 2012 19:19:43 GMT</lastBuildDate><pubDate>Sun, 12 Feb 2012 19:19:43 GMT</pubDate><ttl>60</ttl><item><title>JS写的:既可以输入又可以选择的selected</title><link>http://www.cppblog.com/Viking/archive/2012/02/07/165083.html</link><dc:creator>张贵川</dc:creator><author>张贵川</author><pubDate>Tue, 07 Feb 2012 03:08:00 GMT</pubDate><guid>http://www.cppblog.com/Viking/archive/2012/02/07/165083.html</guid><wfw:comment>http://www.cppblog.com/Viking/comments/165083.html</wfw:comment><comments>http://www.cppblog.com/Viking/archive/2012/02/07/165083.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Viking/comments/commentRss/165083.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Viking/services/trackbacks/165083.html</trackback:ping><description><![CDATA[<div><span style="font-family: Arial; line-height: 26px; color: #333333; "><div>&lt;HTML&gt;<br />&lt;HEAD&gt;<br />&lt;TITLE&gt;&lt;/TITLE&gt;<br />&lt;/HEAD&gt;<br />&lt;Script Language="JavaScript"&gt;<br />&lt;!--<br />&nbsp;var whichText;<br />&nbsp;&nbsp;&nbsp; function selectStation(obj) {<br />&nbsp;&nbsp;var objSelStation&nbsp; = obj;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (obj.selectedIndex != -1) {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var stationName = obj.options[obj.selectedIndex].text;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; whichText.value = stationName;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; }<br />&nbsp;<br />&nbsp;//响应text的事件<br />&nbsp;var pageD =0, pageU;<br />&nbsp;&nbsp;&nbsp; function similarFind(txtObj,seledName) {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var curStationName = txtObj.value;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var objSelStation&nbsp; = eval("document.browser."+seledName);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var stationLength&nbsp; = objSelStation.options.length;<br />&nbsp;&nbsp;pageU = pageD;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;//匹配用text中的数据跟下拉框中的数据<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (var i=0; i&lt;stationLength; i++) {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var stationName = objSelStation.options[i].text;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var re = new RegExp("^" + curStationName);<br />&nbsp;&nbsp;&nbsp;if (stationName.match(re)) {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (i&lt;stationLength - 10) {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; objSelStation.selectedIndex = i + 10;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; objSelStation.selectedIndex = i;<br />&nbsp;&nbsp;&nbsp;&nbsp;pageD = i;<br />&nbsp;&nbsp;&nbsp;&nbsp;pageU = i;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;//响应下移键<br />&nbsp;&nbsp;if(event.keyCode==40) {<br />&nbsp;&nbsp;&nbsp;pageD++;<br />&nbsp;&nbsp;&nbsp;if(pageD==objSelStation.options.length) pageD=0;<br />&nbsp;&nbsp;&nbsp;txtObj.value=objSelStation.options[pageD].text ;<br />&nbsp;&nbsp;&nbsp;objSelStation.selectedIndex = pageD;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;//响应上移键<br />&nbsp;&nbsp;if(event.keyCode==38) {<br />&nbsp;&nbsp;&nbsp;--pageU;<br />&nbsp;&nbsp;&nbsp;if(pageU&lt;0) pageU=objSelStation.options.length-1;<br />&nbsp;&nbsp;&nbsp;txtObj.value = objSelStation.options[pageU].text;<br />&nbsp;&nbsp;&nbsp;objSelStation.selectedIndex = pageU;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; }</div><div>&nbsp;//下拉框显示位置<br />&nbsp;&nbsp;&nbsp; function showDivStation(obj, b,selName) {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var divStation = eval("document.browser."+selName);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (b) {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; whichText = obj;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; divStation.style.top = 20;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; divStation.style.left = 0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; divStation.style.display="block";<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; similarFind(obj,selName);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } else {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; divStation.style.display="none";<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; }<br />//--&gt;<br />&lt;/Script&gt;</div><div>&lt;BODY bgcolor="#FFFFFF" topmargin="0" leftmargin="0"&gt;<br />&lt;form name="browser" &gt;<br />&lt;table border="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="AutoNumber1"&gt;</div><div>&nbsp; &lt;tr&gt;<br />&nbsp; &nbsp; &lt;TD width="6%" valign="top"&gt;POSTCODE &lt;/TD&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp; &lt;TD width="94%" bgcolor="#FFFFFF"&gt;&nbsp;<br />&nbsp;&nbsp;&lt;input type="text" size="20" name="stationname" style="width:120" onfocus="showDivStation(this, true,'selStation')" onblur="showDivStation(this, false,'selStation')" onkeyup="similarFind(this,'selStation')" value=""&gt;&nbsp;<br />&nbsp;&nbsp;&lt;select name="selStation" size="5" style="display:none;width:120; background-color:#CCCC99" onclick="selectStation(this)" onkeyup="selectStation(this)"&gt;<br />&nbsp;&nbsp;&nbsp;&lt;option value="1" &gt;aaa&lt;/option&gt;<br />&nbsp;&nbsp;&nbsp;&lt;option value="2" &gt;aab&lt;/option&gt;<br />&nbsp;&nbsp;&nbsp;&lt;option value="3" &gt;aac&lt;/option&gt;<br />&nbsp;&nbsp;&nbsp;&lt;option value="4" &gt;aba&lt;/option&gt;<br />&nbsp;&nbsp;&nbsp;&lt;option value="5" &gt;abb&lt;/option&gt;<br />&nbsp;&nbsp;&nbsp;&lt;option value="6" &gt;abc&lt;/option&gt;<br />&nbsp;&nbsp;&nbsp;&lt;option value="7" &gt;baa&lt;/option&gt;<br />&nbsp;&nbsp;&nbsp;&lt;option value="8" &gt;bab&lt;/option&gt;<br />&nbsp;&nbsp;&nbsp;&lt;option value="9" &gt;bac&lt;/option&gt;<br />&nbsp;&nbsp;&nbsp;&lt;option value="10" &gt;caa&lt;/option&gt;<br />&nbsp;&nbsp;&nbsp;&lt;option value="11" &gt;cab&lt;/option&gt;<br />&nbsp;&nbsp;&nbsp;&lt;option value="12" &gt;cac&lt;/option&gt;<br />&nbsp;&nbsp;&lt;/select&gt;<br />&nbsp;&lt;/td&gt;<br />&lt;/table&gt;<br />&lt;/form&gt;<br />&lt;/BODY&gt;<br />&lt;/HTML&gt;</div></span></div><img src ="http://www.cppblog.com/Viking/aggbug/165083.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Viking/" target="_blank">张贵川</a> 2012-02-07 11:08 <a href="http://www.cppblog.com/Viking/archive/2012/02/07/165083.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Js文件中调用其它Js函数的方法</title><link>http://www.cppblog.com/Viking/archive/2011/12/26/js.html</link><dc:creator>张贵川</dc:creator><author>张贵川</author><pubDate>Mon, 26 Dec 2011 10:29:00 GMT</pubDate><guid>http://www.cppblog.com/Viking/archive/2011/12/26/js.html</guid><wfw:comment>http://www.cppblog.com/Viking/comments/162863.html</wfw:comment><comments>http://www.cppblog.com/Viking/archive/2011/12/26/js.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Viking/comments/commentRss/162863.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Viking/services/trackbacks/162863.html</trackback:ping><description><![CDATA[<span class="Apple-style-span" style="color: #323e32; font-family: simsun; font-size: 14px; background-color: #0f0f0f; "><div><p align="center" style="margin-top: 0px; margin-right: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; list-style-type: none; list-style-position: initial; list-style-image: initial; word-wrap: normal; word-break: normal; line-height: 21px; "><strong style="font-weight: bold; "><span style="word-wrap: normal; word-break: normal; line-height: 21px; "><a href="http://www.blogjava.net/hiswing/archive/2006/07/30/60898.html" style="text-decoration: none; color: #8d7c00; "><font color="#7297CE" style="word-wrap: normal; word-break: normal; line-height: 21px; "><span style="word-wrap: normal; word-break: normal; line-height: 21px; ">Js</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; "><span style="word-wrap: normal; word-break: normal; line-height: 21px; ">文件中调用其它</span></span><span style="word-wrap: normal; word-break: normal; line-height: 21px; ">Js</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; "><span style="word-wrap: normal; word-break: normal; line-height: 21px; ">函数的方法</span></span></font></a></span></strong></p></div><p style="margin-top: 0px; margin-right: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; list-style-type: none; list-style-position: initial; list-style-image: initial; word-wrap: normal; word-break: normal; line-height: 21px; "><span style="word-wrap: normal; word-break: normal; line-height: 21px; ">　　在项目开发过程中，也许你会遇这样的情况。在某一</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; ">Js</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; ">文件中需要完成某一功能，但这一功能的大部分代码在另外一个</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; ">Js</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; ">文件中已经完成了，自己只需要调用这个方法再加上几句代码就可以实现所需的功能。我们知道，在</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; ">html</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; ">中，利用<br /></span><span style="word-wrap: normal; word-break: normal; line-height: 21px; ">&lt;script language="javascript" type="text/javascript" src="../script.js"&gt;&lt;/script&gt;<br /></span><span style="word-wrap: normal; word-break: normal; line-height: 21px; ">引入的两个</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; ">js</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; ">是不可以相互调用的。那么该如何解决呢？当然，你可以将代码通通</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; ">copy</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; ">过来，这样会让你的b.js会变得很长，也许已经影响到了你对b.js的定位了，检查，维护都会变得麻烦.<br /></span><span style="word-wrap: normal; word-break: normal; line-height: 21px; ">　　例如有这样一个</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; ">html</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; ">，里面有一个按钮，当按下时调用</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; ">b.js</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; ">文件中的方法</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; ">b()</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; ">。而</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; ">b()</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; ">中又要调用</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; ">a.js</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; ">文件中的方法</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; ">a()</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; ">。那我们应该怎么做呢？<br /></span><span style="word-wrap: normal; word-break: normal; line-height: 21px; ">　　首先，我们在</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; ">html</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; ">中引入</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; ">b.js</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; ">，并在</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; ">&lt;/body&gt;</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; ">之后加入引用语句。必须注意，将要引入的<span style="word-wrap: normal; word-break: normal; line-height: 21px; ">Js</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; ">文件代码放在</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; ">&lt;/body&gt;</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; ">下面。</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; "><br /></span></span></p><p style="margin-top: 0px; margin-right: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; list-style-type: none; list-style-position: initial; list-style-image: initial; word-wrap: normal; word-break: normal; line-height: 21px; "><span style="word-wrap: normal; word-break: normal; line-height: 21px; "><span style="word-wrap: normal; word-break: normal; line-height: 21px; "><span style="word-wrap: normal; word-break: normal; line-height: 21px; color: #0000ff; ">&lt;</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; color: #800000; ">html</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; color: #0000ff; ">&gt;</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; color: #000000; "><br /><img align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" real_src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="Js文件中调用其它Js函数的方法（转）" title="Js文件中调用其它Js函数的方法（转）" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; list-style-type: none; list-style-position: initial; list-style-image: initial; " />&nbsp;<wbr>&nbsp;<wbr></span><span style="word-wrap: normal; word-break: normal; line-height: 21px; color: #0000ff; ">&lt;</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; color: #800000; ">body</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; color: #0000ff; ">&gt;</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; color: #000000; "><br /><img align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" real_src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="Js文件中调用其它Js函数的方法（转）" title="Js文件中调用其它Js函数的方法（转）" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; list-style-type: none; list-style-position: initial; list-style-image: initial; " />&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr></span><span style="word-wrap: normal; word-break: normal; line-height: 21px; color: #0000ff; ">&lt;</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; color: #800000; ">input&nbsp;<wbr></span><span style="word-wrap: normal; word-break: normal; line-height: 21px; color: #ff0000; ">type</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; color: #0000ff; ">="button"</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; color: #ff0000; ">&nbsp;<wbr>value</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; color: #0000ff; ">="ok"</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; color: #ff0000; ">&nbsp;<wbr>onclick</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; color: #0000ff; ">="javascript:b()"</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; color: #0000ff; ">&gt;</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; color: #000000; "><br /><img align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" real_src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="Js文件中调用其它Js函数的方法（转）" title="Js文件中调用其它Js函数的方法（转）" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; list-style-type: none; list-style-position: initial; list-style-image: initial; " />&nbsp;<wbr>&nbsp;<wbr></span><span style="word-wrap: normal; word-break: normal; line-height: 21px; color: #0000ff; ">&lt;/</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; color: #800000; ">body</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; color: #0000ff; ">&gt;</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; color: #000000; "><br /><img align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" real_src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="Js文件中调用其它Js函数的方法（转）" title="Js文件中调用其它Js函数的方法（转）" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; list-style-type: none; list-style-position: initial; list-style-image: initial; " />&nbsp;<wbr><br /><img align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" real_src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="Js文件中调用其它Js函数的方法（转）" title="Js文件中调用其它Js函数的方法（转）" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; list-style-type: none; list-style-position: initial; list-style-image: initial; " />&nbsp;<wbr></span><span style="word-wrap: normal; word-break: normal; line-height: 21px; color: #008000; ">&lt;!--</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; color: #008000; ">这里引用要放在body下面</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; color: #008000; ">--&gt;</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; color: #000000; "><br /><img align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" real_src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="Js文件中调用其它Js函数的方法（转）" title="Js文件中调用其它Js函数的方法（转）" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; list-style-type: none; list-style-position: initial; list-style-image: initial; " />&nbsp;<wbr></span><span style="word-wrap: normal; word-break: normal; line-height: 21px; color: #0000ff; ">&lt;</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; color: #800000; ">script&nbsp;<wbr></span><span style="word-wrap: normal; word-break: normal; line-height: 21px; color: #ff0000; ">language</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; color: #0000ff; ">="JAVASCRIPT"</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; color: #ff0000; ">&nbsp;<wbr>src</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; color: #0000ff; ">='b.js'</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; color: #0000ff; ">&gt;&lt;/</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; color: #800000; ">script</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; color: #0000ff; ">&gt;</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; color: #000000; "><br /><img align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" real_src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="Js文件中调用其它Js函数的方法（转）" title="Js文件中调用其它Js函数的方法（转）" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; list-style-type: none; list-style-position: initial; list-style-image: initial; " />&nbsp;<wbr><br /><img align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" real_src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="Js文件中调用其它Js函数的方法（转）" title="Js文件中调用其它Js函数的方法（转）" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; list-style-type: none; list-style-position: initial; list-style-image: initial; " /></span><span style="word-wrap: normal; word-break: normal; line-height: 21px; color: #0000ff; ">&lt;/</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; color: #800000; ">html</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; color: #0000ff; ">&gt;</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; color: #000000; "><br /><img align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" real_src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="Js文件中调用其它Js函数的方法（转）" title="Js文件中调用其它Js函数的方法（转）" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; list-style-type: none; list-style-position: initial; list-style-image: initial; " />　<span style="word-wrap: normal; word-break: normal; line-height: 21px; ">b.js</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; ">文件中引入a.js,内容如下：</span></span></span></span></p><p style="margin-top: 0px; margin-right: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; list-style-type: none; list-style-position: initial; list-style-image: initial; word-wrap: normal; word-break: normal; line-height: 21px; "><span style="word-wrap: normal; word-break: normal; line-height: 21px; "><span style="word-wrap: normal; word-break: normal; line-height: 21px; "><span style="word-wrap: normal; word-break: normal; line-height: 21px; color: #000000; "><span style="word-wrap: normal; word-break: normal; line-height: 21px; ">new_element=document.createElement_x("script");<br /><img align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" real_src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="Js文件中调用其它Js函数的方法（转）" title="Js文件中调用其它Js函数的方法（转）" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; list-style-type: none; list-style-position: initial; list-style-image: initial; " />&nbsp;<wbr>new_element.setAttribute("type","text/javascript");<br /><img align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" real_src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="Js文件中调用其它Js函数的方法（转）" title="Js文件中调用其它Js函数的方法（转）" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; list-style-type: none; list-style-position: initial; list-style-image: initial; " />new_element.setAttribute("src","a.js");//&nbsp;<wbr>在这里引入了a.js<br /><img align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" real_src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="Js文件中调用其它Js函数的方法（转）" title="Js文件中调用其它Js函数的方法（转）" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; list-style-type: none; list-style-position: initial; list-style-image: initial; " />&nbsp;<wbr>document.body.appendChild(new_element);<br /><img align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" real_src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="Js文件中调用其它Js函数的方法（转）" title="Js文件中调用其它Js函数的方法（转）" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; list-style-type: none; list-style-position: initial; list-style-image: initial; " />&nbsp;<wbr><br /><img align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" real_src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="Js文件中调用其它Js函数的方法（转）" title="Js文件中调用其它Js函数的方法（转）" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; list-style-type: none; list-style-position: initial; list-style-image: initial; " />&nbsp;<wbr>function&nbsp;<wbr>b()&nbsp;<wbr>&nbsp;<wbr>{<br /><img align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" real_src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="Js文件中调用其它Js函数的方法（转）" title="Js文件中调用其它Js函数的方法（转）" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; list-style-type: none; list-style-position: initial; list-style-image: initial; " />&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>a();<br /><img align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" real_src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="Js文件中调用其它Js函数的方法（转）" title="Js文件中调用其它Js函数的方法（转）" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; list-style-type: none; list-style-position: initial; list-style-image: initial; " />&nbsp;<wbr>}<br />　在<span style="word-wrap: normal; word-break: normal; line-height: 21px; ">b.js</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; ">文件中前</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; ">4</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; ">行代码中我们引入了</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; ">a.js</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; ">文件，并在第</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; ">7</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; ">行代码中调用了</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; ">a.js</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; ">代码中的</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; ">a()</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; ">方法。</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; "><br /><br /></span><span style="word-wrap: normal; word-break: normal; line-height: 21px; ">　　让我们来分析一下关键的几句代码：首先，我们利用</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; ">document.createElement_x("script")</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; ">生成了一个</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; ">script</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; ">的标签，设置其</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; ">type</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; ">属性为</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; ">text/javascript</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; ">，</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; ">src</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; ">为</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; ">a.js(</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; ">这里的</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; ">a.js</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; ">同</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; ">b.js</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; ">放在同一个目录，也可放在不同的目录</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; ">)</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; ">。最后将这个标签动态地加入</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; ">body</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; ">中。如此一来，我们就可以调用到不同</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; ">js</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; ">文件中的方法了。</span></span></span></span></span></p><p style="margin-top: 0px; margin-right: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; list-style-type: none; list-style-position: initial; list-style-image: initial; word-wrap: normal; word-break: normal; line-height: 21px; "><span style="word-wrap: normal; word-break: normal; line-height: 21px; "><strong style="font-weight: bold; color: #ff0000; ">注意</strong>：</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; ">&lt;</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; ">script&nbsp;<wbr></span><span style="word-wrap: normal; word-break: normal; line-height: 21px; ">language</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; ">="JAVASCRIPT"</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; ">&nbsp;<wbr>src</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; ">='b.js'&gt;&lt;/</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; ">script</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; ">&gt;</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; ">一定要放在</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; ">body</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; ">下面。<br /></span><span style="word-wrap: normal; word-break: normal; line-height: 21px; ">因为在</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; ">b.js</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; ">中用到了</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; ">body</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; ">（</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; ">document.body.appendChild(new_element);</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; ">）</span>&nbsp;<span style="word-wrap: normal; word-break: normal; line-height: 21px; "><br /></span><span style="word-wrap: normal; word-break: normal; line-height: 21px; ">如果将引如</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; ">b.js</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; ">的代码放在</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; ">body</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; ">上面，也就是说，</span>&nbsp;<span style="word-wrap: normal; word-break: normal; line-height: 21px; "><br /></span><span style="word-wrap: normal; word-break: normal; line-height: 21px; ">进入页面后，还没有生成</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; ">body</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; ">就已经执行</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; ">b.js</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; ">里的</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; ">document.body.appendChild(new_element);</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; ">了。</span>&nbsp;<span style="word-wrap: normal; word-break: normal; line-height: 21px; "><br /></span><span style="word-wrap: normal; word-break: normal; line-height: 21px; ">这时</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; ">body</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; ">不存在就会抛</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; ">javascript</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; ">错误。</span></p></span><img src ="http://www.cppblog.com/Viking/aggbug/162863.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Viking/" target="_blank">张贵川</a> 2011-12-26 18:29 <a href="http://www.cppblog.com/Viking/archive/2011/12/26/js.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>VIM 文件编码识别与乱码处理 </title><link>http://www.cppblog.com/Viking/archive/2011/04/12/143997.html</link><dc:creator>张贵川</dc:creator><author>张贵川</author><pubDate>Mon, 11 Apr 2011 23:28:00 GMT</pubDate><guid>http://www.cppblog.com/Viking/archive/2011/04/12/143997.html</guid><wfw:comment>http://www.cppblog.com/Viking/comments/143997.html</wfw:comment><comments>http://www.cppblog.com/Viking/archive/2011/04/12/143997.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Viking/comments/commentRss/143997.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Viking/services/trackbacks/143997.html</trackback:ping><description><![CDATA[<div>
#TITLE: VIM 文件编码识别与乱码处理
</div>
<div>
&nbsp;
</div>
<div>
edyfox<br>
<br>
在 Vim 中，<br>
有四个与编码有关的选项，<br>
它们是：<br>
''fileencodings''、<br>
''fileencoding''、<br>
''encoding'' 和 ''termencoding''。<br>
在实际使用中，<br>
任何一个选项出现错误，<br>
都会导致出现乱码。<br>
因此，<br>
每一个 Vim 用户都应该明确这四个选项的含义。<br>
下面，<br>
我们详细介绍一下这四个选项的含义和作用。<br>
</div>
<div>
* encoding<br>
<br>
''encoding'' 是 Vim 内部使用的字符编码方式。<br>
当我们设置了 ''encoding'' 之后，<br>
Vim 内部所有的 buffer、<br>
寄存器、<br>
脚本中的字符串等，<br>
全都使用这个编码。<br>
Vim 在工作的时候，<br>
如果编码方式与它的内部编码不一致，<br>
它会先把编码转换成内部编码。<br>
如果工作用的编码中含有无法转换为内部编码的字符，<br>
在这些字符就会丢失。<br>
因此，在选择 Vim 的内部编码的时候，<br>
一定要使用一种表现能力足够强的编码，<br>
以免影响正常工作。<br>
<br>
由于 ''encoding'' 选项涉及到 Vim 中所有字符的内部表示，<br>
因此只能在 Vim 启动的时候设置一次。<br>
在 Vim 工作过程中修改 ''encoding'' 会造成非常多的问题。<br>
如果没有特别的理由，<br>
请始终将 ''encoding'' 设置为 ''utf-8''。<br>
为了避免在非 UTF-8 的系统如 Windows 下，<br>
菜单和系统提示出现乱码，<br>
可同时做这几项设置：<br>
<br>
#Code syntax="
vim"
&lt;
&lt;
---<br>
set encoding=utf-8<br>
set langmenu=zh_CN.UTF-8<br>
language message zh_CN.UTF-8<br>
</div>
* termencoding<br>
<br>
''termencoding'' 是 Vim 用于屏幕显示的编码，<br>
在显示的时候，<br>
Vim 会把内部编码转换为屏幕编码，<br>
再用于输出。<br>
内部编码中含有无法转换为屏幕编码的字符时，<br>
该字符会变成问号，<br>
但不会影响对它的编辑操作。<br>
如果 ''termencoding'' 没有设置，<br>
则直接使用 ''encoding'' 不进行转换。<br>
<br>
举个例子，<br>
当你在 Windows 下通过 telnet 登录 Linux 工作站时，<br>
由于 Windows 的 telnet 是 GBK 编码的，<br>
而 Linux 下使用 UTF-8 编码，<br>
你在 telnet 下的 Vim 中就会乱码。<br>
此时有两种消除乱码的方式：<br>
一是把 Vim 的 ''encoding'' 改为 ''gbk''，<br>
另一种方法是保持 ''encoding'' 为 ''utf-8''，<br>
把 ''termencoding'' 改为 ''gbk''，<br>
让 Vim 在显示的时候转码。<br>
显然，<br>
使用前一种方法时，<br>
如果遇到编辑的文件中含有 GBK 无法表示的字符时，<br>
这些字符就会丢失。<br>
但如果使用后一种方法，<br>
虽然由于终端所限，<br>
这些字符无法显示，<br>
但在编辑过程中这些字符是不会丢失的。<br>
<br>
对于图形界面下的 GVim，<br>
它的显示不依赖 TERM，<br>
因此 ''termencoding'' 对于它没有意义。<br>
在 GTK2 下的 GVim 中，<br>
''termencoding'' 永远是 ''utf-8''，<br>
并且不能修改。<br>
而 Windows 下的 GVim 则忽略 ''termencoding'' 的存在。<br>
<br>
* fileencoding<br>
<br>
当 Vim 从磁盘上读取文件的时候，<br>
会对文件的编码进行探测。<br>
如果文件的编码方式和 Vim 的内部编码方式不同，<br>
Vim 就会对编码进行转换。<br>
转换完毕后，<br>
Vim 会将 ''fileencoding'' 选项设置为文件的编码。<br>
当 Vim 存盘的时候，<br>
如果 ''encoding'' 和 ''fileencoding'' 不一样，<br>
Vim 就会进行编码转换。<br>
因此，<br>
通过打开文件后设置 ''fileencoding''，<br>
我们可以将文件由一种编码转换为另一种编码。<br>
但是，<br>
由前面的介绍可以看出，<br>
''fileencoding'' 是在打开文件的时候，<br>
由 Vim 进行探测后自动设置的。<br>
因此，<br>
如果出现乱码，<br>
我们无法通过在打开文件后重新设置 ''fileencoding'' 来纠正乱码。<br>
<br>
* fileencodings<br>
<br>
编码的自动识别是通过设置 fileencodings 实现的，<br>
注意是复数形式。<br>
fileencodings 是一个用逗号分隔的列表，<br>
列表中的每一项是一种编码的名称。<br>
当我们打开文件的时候，<br>
VIM 按顺序使用 fileencodings 中的编码进行尝试解码，<br>
如果成功的话，<br>
就使用该编码方式进行解码，<br>
并将 ''fileencoding'' 设置为这个值，<br>
如果失败的话，<br>
就继续试验下一个编码。<br>
<br>
因此，<br>
我们在设置 ''fileencodings'' 的时候，<br>
一定要把要求严格的、<br>
当文件不是这个编码的时候更容易出现解码失败的编码方式放在前面，<br>
把宽松的编码方式放在后面。<br>
<br>
例如，<br>
latin1 是一种非常宽松的编码方式，<br>
任何一种编码方式得到的文本，<br>
用 latin1 进行解码，<br>
都不会发生解码失败<br>
--<br>
当然，<br>
解码得到的结果自然也就是理所当然的&#8220;乱码&#8221;。<br>
因此，<br>
如果你把 ''latin1'' 放到了 ''fileencodings'' 的第一位的话，<br>
打开任何中文文件都是乱码也就是理所当然的了。<br>
<br>
以下是滇狐推荐的一个 ''fileencodings'' 设置：<br>
<br>
#Code syntax="
vim"
&lt;
&lt;
---<br>
set
fileencodings=ucs-bom,utf-8,cp936,gb18030,big5,euc-jp,euc-kr,latin1<br>
---<br>
<br>
其中，<br>
ucs-bom 是一种非常严格的编码，<br>
非该编码的文件几乎没有可能被误判为 ucs-bom，<br>
因此放在第一位。<br>
<br>
utf-8 也相当严格，<br>
除了很短的文件外<br>
(例如许多人津津乐道的 GBK 编码的&#8220;联通&#8221;被误判为 UTF-8 编码的经典错误)，<br>
现实生活中一般文件是几乎不可能被误判的，<br>
因此放在第二位。<br>
<br>
接下来是 cp936 和 gb18030，<br>
这两种编码相对宽松，<br>
如果放前面的话，<br>
会出现大量误判，<br>
所以就让它们靠后一些。<br>
cp936 的编码空间比 gb18030 小，<br>
所以把 cp936 放在 gb18030 前面。<br>
<br>
至于 big5、euc-jp 和 euc-kr，<br>
它们的严格程度和 cp936 差不多，<br>
把它们放在后面，<br>
在编辑这些编码的文件的时候必然出现大量误判，<br>
但这是 Vim 内置编码探测机制没有办法解决的事。<br>
由于中国用户很少有机会编辑这些编码的文件，<br>
因此我们还是决定把 cp936 和 gb18030 前提以保证这些编码的识别。<br>
<br>
最后就是 latin1 了。<br>
它是一种极其宽松的编码，<br>
以至于我们不得不把它放在最后一位。<br>
不过可惜的是，<br>
当你碰到一个真的 latin1 编码的文件时，<br>
绝大部分情况下，<br>
它没有机会 fall-back 到 latin1，<br>
往往在前面的编码中就被误判了。<br>
不过，<br>
正如前面所说的，<br>
中国用户没有太多机会接触这样的文件。<br>
<br>
如果编码被误判了，<br>
解码后的结果就无法被人类识别，<br>
于是我们就说，<br>
这个文件乱码了。<br>
此时，<br>
如果你知道这个文件的正确编码的话，<br>
可以把 ''fileencodings'' 改成只有这一种编码，<br>
阻止任何 fall-back 发生，<br>
然后重新打开这个文件。<br>
<br>
* fencview<br>
<br>
根据前面的介绍，<br>
我们知道，<br>
通过 Vim 内置的编码识别机制，<br>
识别率是很低的，<br>
尤其是对于简体中文 (GBK/GB18030)、<br>
繁体中文 (Big5)、<br>
日文 (euc-jp)<br>
和韩文 (euc-kr) 之间的识别。<br>
而对于普通用户而言，<br>
肉眼看出一个文件的编码方式也是很不现实的事情。<br>
因此，<br>
滇狐强烈推荐水木社区的 mbbill 开发的 fencview 插件。<br>
该插件使用词频统计的方式识别编码，<br>
正确率非常高。
<br><img src ="http://www.cppblog.com/Viking/aggbug/143997.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Viking/" target="_blank">张贵川</a> 2011-04-12 07:28 <a href="http://www.cppblog.com/Viking/archive/2011/04/12/143997.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>