4 Stimmen

Java-Anwendung liest UTF-8-kodierte Textdateien, aber nach dem Ant-Build sind die Zeichen nicht wie erwartet

Ich habe ein Java-Projekt, das UTF-8-kodierte .txt-Dateien liest, um Zeichenfolgen zu erstellen, die angezeigt werden. In Eclipse werden die Dateien wie erwartet gelesen und angezeigt, aber nach meinem Ant-Build kommen die Zeichen nicht so heraus, wie sie sollten.

Hier ist meine build.xml-Datei

<?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>

Ich habe versucht, mit der Zeichenkodierung UTF-8 zu kompilieren, indem ich

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

aber offensichtlich ist das nicht genug, was muss ich ändern, damit es funktioniert?

Danke

Bearbeiten 1

Ich lese die .txt-Dateien mit ein.

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

die eine Zeichenkette an eine String-Variable zurückgibt, dann nehme ich einfach diese Zeichenkette und gebe sie an eine Objekt

Beim Kompilieren und Ausführen in Eclipse funktioniert es gut.

Bearbeiten 2

Dies ist die Lösung

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

Einfach, wenn man weiß, wo man suchen muss! lol Danke!

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X