gpt4 book ai didi

Java 应用程序读取 UTF-8 编码的文本文件,但在 ant build 之后字符不符合预期

转载 作者:搜寻专家 更新时间:2023-11-01 03:11:40 25 4
gpt4 key购买 nike

我有一个 Java 项目,它读取 UTF-8 编码的 .txt 文件以构建显示的字符串。在 Eclipse 中运行,文件按预期读取和显示,但在我的 ant 构建之后,字符没有按预期显示。

这是我的 build.xml 文件

<?xml version="1.0"?>
<project name="Rutherford" default="jar">

<property name="libsSrc" value="libs"/>
<property name="build" value="build"/>
<property name="classes" value="build/classes"/>
<property name="jar" value="build/jar"/>
<property name="libs" value="build/libs"/>

<path id="classpath">
<fileset dir="${libsSrc}" includes="*.jar"/>
</path>

<pathconvert property="mf.classpath" pathsep=" ">
<path refid="classpath"/>
<mapper>
<chainedmapper>
<flattenmapper/>
<globmapper from="*.jar" to="lib/*.jar"/>
</chainedmapper>
</mapper>
</pathconvert>

<target name="clean" description="remove intermediate files">
<delete dir="build"/>
</target>

<target name="compile" description="compile the Java source code to class files">
<mkdir dir="${classes}"/>
<javac srcdir="." destdir="${classes}" classpathref="classpath">
<compilerarg line="-encoding utf-8"/>
</javac>
</target>

<target name="jar" depends="compile" description="create a Jar file for the application">
<mkdir dir="${jar}"/>
<jar destfile="${jar}/App.jar">
<zipgroupfileset dir="${libsSrc}" includes="*.jar"/>
<fileset dir="${classes}" includes="**/*.class"/>
<manifest>
<attribute name="Main-Class" value="nat.rutherford.DesktopStarter"/>
<attribute name="Class-Path" value="${mf.classpath}"/>
</manifest>
</jar>
</target>

</project>

我尝试使用 UTF-8 字符编码进行编译

<compilerarg line="-encoding utf-8"/>

但显然这还不够,我需要修改什么才能让它工作?

谢谢

编辑 1

我阅读了 .txt 文件。

public String fileToString(String file) {
InputStream in = new BufferedInputStream(Gdx.files.internal(file).read());
return new Scanner(in).useDelimiter("\\A").next();
}

它将一个字符串返回给一个 String 变量,然后我只需将这个字符串传递给一个 object

在eclipse中编译运行正常。

编辑2

这是修复

public String fileToString(String file) {
InputStream in = new BufferedInputStream(Gdx.files.internal(file).read());
return new Scanner(in, "UTF-8").useDelimiter("\\A").next();
}

当您知道去哪里找时,就很简单了!大声笑谢谢!

最佳答案

根据 The documentation ,使用 encoding='utf-8' 而不是 compiler-arg

但是......我怀疑你的问题是运行时,而不是编译时。您是否在不传递编码的情况下创建 OutputStreamWriter 对象?或者将有趣的字符传递给 System.out.println?还是相应的InputStreamReader或者Scanner?在这种情况下,解决方法是将 -Dfile.encoding=utf-8 添加到命令行。

关于Java 应用程序读取 UTF-8 编码的文本文件,但在 ant build 之后字符不符合预期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8706183/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com