“中文问题没商量”之Ant中的中文问题

news/2024/7/8 4:41:26
  在软件系统中,由于存在着各种各样的字符编码问题,比如另我们非常头痛的中文问题。因此,现在趋向于使用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文件的部分内容:


 
 
 
 
 
 
 
 
 
 
 
 
 
 
  http://www.easyjf.com/" />
 
 
….
  这里的问题是如何建一个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开源团队  大峡,转载请保留作者声明!)
 



  在软件系统中,由于存在着各种各样的字符编码问题,比如另我们非常头痛的中文问题。因此,现在趋向于使用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文件的部分内容:


 
 
 
 
 
 
 
 
 
 
 
 
 
 
  http://www.easyjf.com/" />
 
 
….
  这里的问题是如何建一个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开源团队  大峡,转载请保留作者声明!)
 




http://www.niftyadmin.cn/n/3647945.html

相关文章

“中文问题没商量”之Dom4j中的编码问题

本文主要讲述的是Dom4j在把Document保存到文件过程中出现的一个中文问题,本文跟《80前》一文一样,以Spring项目无关,请“春迷”们自重、没事勿扰,文中不足之处欢迎大家批评指教。Dom4j是一个比较优秀的java开源xml解析项目&#x…

通过Pulumi在DigitalOcean上指导Kubernetes

视频 (Video) 关于谈话 (About the Talk) Learn how Pulumi — an open source infrastructure as code SDK and SaaS platform — helps you to leverage real programming languages to overhaul the complexity of deploying and managing Kubernetes clusters and workload…

“中文问题没商量”之Spring2.0项目中的Bug一例

Spring是一个非常优秀的开源项目,然而,跟其它任何优秀的系统产品一样,也存在着这样那样的问题,我们喜欢称为Bug。Spring中的Bug确实不少,今天为了充实“中文问题没商量”主题,举一个不算很重要,…

如何在Ubuntu 18.04上安装ERPNext堆栈

The author selected Software in the Public Interest to receive a donation as part of the Write for DOnations program. 作者选择了符合公共利益的软件来接受捐赠,这是Write for DOnations计划的一部分。 介绍 (Introduction) ERPNext is an Enterprise Reso…

在一个开源项目的开发中遇到的问题

记得以前曾经有网友跟我们讨论有关EasyJWeb的效率问题,大致意思是EasyJWeb用得少,没有经过成熟项目的考验,而struts应用案例比较多,所以用起更放心。我的看法是,EasyJWeb只是一个MVC框架,在一个J2EE应用中&…

如何在Ubuntu 18.04上连接到托管数据库

介绍 (Introduction) Managed databases have a number of benefits over self-managed databases, including automated updates, simplified scaling, and high availability. If you’re new to working with managed databases, though, the best way to perform certain t…

easyjweb-0.7.0版本发布

Easyjweb-0.7在easyjweb-0.6的版本上做了一些改进:主要的功能改变有:1, 去掉了0.6版本比较难于使用的intercpetor,增加了在执行Action前后的intercptor;2, 增加了主题功能的支持;3&#xff0c…

apache 配置错误信息_Apache配置错误AH00526:语法错误

apache 配置错误信息Common Apache Errors 常见的Apache错误This tutorial series explains how to troubleshoot and fix some of the most common errors that you may encounter when using the Apache web server. 本教程系列说明了如何解决和修复使用Apache Web服务器时可…