最近项目要使用openfire来进行插件开发,下载openfire源码导入工程后,运行源码的build目录下的build.xml中的ant命令,其中run命令是启动openfire服务器,结果控制台输出乱码,如图所示:
run命令的原始ant脚本是:
<!-- run =================================================================================== -->
<target name="run" description="Starts Openfire inline to the build process.">
<available file="${target.openfireHome}" type="dir" property="openfire.found"/>
<fail unless="openfire.found"
message="Can't find openfire, run 'ant openfire' or specify with -Dtarget.openfireHome."/>
<condition property="run.debug"
value="-Xdebug -Xint -server -Xnoagent -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000">
<isset property="debug"/>
</condition>
<property name="run.spawn" value="false"/>
<java jar="${target.openfireHome}/lib/startup.jar" fork="true" spawn="${run.spawn}"
dir="${target.openfireHome}/bin">
<jvmarg line="${run.debug} -DopenfireHome=${target.openfireHome}"/>
</java>
</target>
通过搜索网上的解决办法,找到两种修改方式解决乱码问题,都是在<java></java>命令中加上一条语句。
<!-- run =================================================================================== -->
<target name="run" description="Starts Openfire inline to the build process.">
<available file="${target.openfireHome}" type="dir" property="openfire.found"/>
<fail unless="openfire.found"
message="Can't find openfire, run 'ant openfire' or specify with -Dtarget.openfireHome."/>
<condition property="run.debug"
value="-Xdebug -Xint -server -Xnoagent -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000">
<isset property="debug"/>
</condition>
<property name="run.spawn" value="false"/>
<java jar="${target.openfireHome}/lib/startup.jar" fork="true" spawn="${run.spawn}"
dir="${target.openfireHome}/bin">
<jvmarg line="${run.debug} -DopenfireHome=${target.openfireHome}"/>
<jvmarg value="-Dfile.encoding=UTF-8"/>
<!--<sysproperty key="file.encoding" value="UTF-8" />-->
</java>
</target>
即java命令中加上
<jvmarg value="-Dfile.encoding=UTF-8"/> 或者<sysproperty key="file.encoding" value="UTF-8" />任一即可解决。
解决后控制台正常输出中文。