隨筆 - 115  文章 - 481  trackbacks - 0
          <2006年8月>
          303112345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          常用鏈接

          留言簿(19)

          隨筆檔案(115)

          文章檔案(4)

          新聞檔案(1)

          成員連接

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

            在軟件系統中,由于存在著各種各樣的字符編碼問題,比如另我們非常頭痛的中文問題。因此,現在趨向于使用UTF-8編碼作為軟件中通過編碼格式,從而可以避免大多數字符編碼的問題。本文跟《80前》一文一樣,以Spring項目無關,請“春迷”們自重、沒事勿擾,文中不足之處歡迎大家批評指教。

            在Java開發中,我們經常使用Ant來編譯及打包項目。默認情況下Ant會去調用一個名為build.xml文件,文件中定義了相關的單元及任務等,可以根據用戶命令執行相應的任務單元。
            比如,在很多開源項目如Spring、webwork、EasyJWeb、EasyDBO等,其根目錄下都有一個build.xml文件。
          在國外的開源項目中,build.xml文件中的內容全部是英文字符,因此build.xml使用普通的ANSI或UTF-8或GBK都沒問題,也不會遇到字符編碼問題。而對于國產的開源項目EasyJWeb、EasyDBO來說,為了方便國內的用戶,肯定在文件會包含一些中文說明。而默認情況下包括中文字符,格式為ANSI的build.xml文件是無法正確運行的,這應該跟本人所寫的Dom4j的原因類似。
            此時,我們需要把build.xml文件改成UTF-8格式,并指定xml文件的格式為utf-8。如下面是EasyJWeb開源項目中build.xml文件的部分內容:
          <?xml version="1.0" encoding="UTF-8"?>
          <project name="EasyJF" default="usage" basedir="." xmlns:artifact="urn:maven-artifact-ant">
          ?<property file="easyjfbuild.properties" />
          ?<!--目錄定義-->
          ?<property name="main.src.dir" value="${basedir}/src/main" />
          ?<property name="test.src.dir" value="${basedir}/src/test" />
          ?<property name="lib.dir" value="${basedir}/lib" />
          ?<property name="env.lib.dir" value="${lib.dir}/build/" />
          ?<property name="doc.dir" value="${basedir}/doc" />
          ?<property name="build.dir" value="${basedir}/build" />
          ?<property name="release.dir" value="${basedir}/release" />
          ?<property name="web.dir" value="${basedir}/webapps" />
          ?<property name="ide.dir" value="${basedir}/misc/ide" />
          ?<!--項目屬性-->
          ?<property name="project.provider.name" value="easyjf" />
          ?<property name="project.name" value="jweb" />
          ?<property name="project.author" value="?<property name="project.version" value="0.6" />
          ?<!--發布文件名-->
          ….
            這里的問題是如何建一個UTF-8格式的build.xml文件。
          錯誤的習慣:
            在通常情況下,我們習慣于使用windows下的記事本等工具直接編碼xml文件內容,并另存為UTF-8格式,如下圖所示:
          ?
            這種方式建立的build.xml文件是不正確的,最讓人煩惱的是具有非常的不穩定性。這個不穩定性表現在一些系統下能正確使用,而一些系統下會出現類似如下的錯誤:

            D:\EasyJF\wlhy\bin>build.bat
            Buildfile: ..\build.xml
            BUILD FAILED
            D:\EasyJF\wlhy\build.xml:1: 缺少文件根組件
            Total time: 0 seconds
            請按任意鍵繼續. . .
          ?
            這個錯誤也是EasyJF團隊中的williamRaym在寫EasyJWeb的build腳本時發現的,而且后來又很多網友反映類似的錯誤,如當前EasyJF下的iula 項目就存在這個問題:
          http://www.easyjf.com/html/bbs/20060814/1208824819851986.htm
            (也許是我的機器容錯性好,不會報錯,呵呵!)。
            
          正確的方法:
            前面說了,用記事本建立UTF-8格式的xml文件是不正確的,經過我們多次實踐,正確的方法之一是使用Eclipse來建這個xml文件,在建立工程的時候需要把整個工程的字符集設置成為UTF-8,然后直接建立一個build.xml文件,默認情況下該文件以UTF-8的格式保存。
            這樣建立起來的腳本文件,使用Ant的時候,不管build.xml中包含什么中文字符,都能正常運行。當然,應該還可以用其它的開發工具建立UTF-8格式的文件,還請大家來試驗。另外也可以用JAVA自己寫一個小程序來把ANSI格式的文件轉成UTF-8文件,這樣也沒問題。
          ?
          小結:
            之所以很多開源項目的build過程中不會存在問題,是因為他的腳本文件中沒有包含中文字符或其它字符。面在國產開源項目中,由于存在中文注釋、說明等,所以在建立build.xml文件的時候需要作一些特殊的處理,使用UTF-8格式的文件。當然,本文還重點提出了兩種建立UTF-8文件的方法,其中用記事本是不穩定的,錯誤的;而用專業Java開發工具或JDK建立的腳本才是正確、穩定的。
          (注:本文作者,EasyJF開源團隊 大峽,轉載請保留作者聲明!)
          posted on 2006-08-21 11:44 簡易java框架 閱讀(1664) 評論(4)  編輯  收藏

          FeedBack:
          # re: “中文問題沒商量”之Ant中的中文問題  2006-08-21 12:47 Robin's Java World
          這樣的問題還用得了長篇大論嗎???  回復  更多評論
            
          # re: “中文問題沒商量”之Ant中的中文問題  2006-08-21 14:37 李李
          即使是文本編輯器也很少見用記事本來寫的,效率不高
          推薦高效的方法,用UltraEdit,File/文件-->Convert/轉換 這里你想怎么轉都可以  回復  更多評論
            
          # re: “中文問題沒商量”之Ant中的中文問題  2006-08-21 21:07 建議找本xml的入門讀物
          倒......
          在ant文件的xml注釋里搞個中文說明也要來擺一擺........  回復  更多評論
            
          # re: “中文問題沒商量”之Ant中的中文問題  2009-01-06 11:33 去死吧大陸人
          @建議找本xml的入門讀物

          回文的死大陸人 都愛自以為很厲害
          人家po這篇關你屁事  回復  更多評論
            

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 西昌市| 二手房| 固安县| 运城市| 寿光市| 揭阳市| 色达县| 雷山县| 大埔县| 铁力市| 静海县| 安化县| 云和县| 湄潭县| 嘉荫县| 汝南县| 福贡县| 永康市| 盈江县| 临泉县| 贵港市| 和硕县| 庄河市| 宣恩县| 西畴县| 吉木萨尔县| 石门县| 罗甸县| 新和县| 玛多县| 宽城| 镇沅| 永寿县| 灵台县| 滦南县| 留坝县| 屯昌县| 虎林市| 玛曲县| 涟源市| 宁海县|