2017-12-28 20 views
0

ich unter info.xml-Datei, die für den Knoten Firma Czech Zeichen verwendet:ant Loadfile Aufgabe mit tschechischen Zeichen nicht in XML-Datei gegeben arbeitet

<?xml version="1.0" encoding="utf-8"?> 
<Candidates> 
    <name>Arvind Kumar</name> 
    <company>ěčš</company> 
</Candidates> 

Ich habe unter build.xml Datei Info zu lesen. xML-Datei und Inhalt von xML-Datei:

<?xml version="1.0" encoding="utf-8"?> 
<project name="Check" default=""> 
    <xmlproperty file="info.xml" collapseAttributes="true"/> 
    <echo file="output.txt" append="false">${Candidates.company}</echo> 
</project> 

Nach dem Ausführen Ameise auf Windows 7, bekomme ich folgende Ausgabe in output.txt dem falschen Wert von 'Unternehmen' zeigt:

<?xml version="1.0" encoding="utf-8"?> 
<Candidates> 
    <name>Arvind Kumar</name> 
    <company>??š</company> 
</Candidates> 

Ich habe versucht, mit einem anderen build.xml mit Codierung ant Loadfile Aufgabe zu verwenden, aber dies auch nicht helfen:

<?xml version="1.0" encoding="utf-8"?> 
<project name="Check" default=""> 
    <loadfile encoding="utf-8" srcFile="info.xml" property="encoded_file"/> 
    <echo file="output.txt" append="false">${encoded_file}</echo> 
</project> 

Bitte lassen Sie mich wissen, wie Ant-Task zu verwenden, die und korrekt anzuzeigen tschechischen Zeichen in lesen XML-Datei.

Antwort

1

Es ist nichts falsch mit Ameisen. Wie die Zeichen angezeigt werden, hängt von dem Programm ab, mit dem Sie die Informationen anzeigen. z.B. Wenn Sie die UTF-8-Zeichen an der Windows-Eingabeaufforderung anzeigen, wird sie nicht korrekt angezeigt, da UTF-8 nicht unterstützt wird. (Möglicherweise gibt es Einstellungen, um es zu ändern, aber standardmäßig nicht). Wenn Sie es in eine Datei einfügen, sollte der Viewer, mit dem Sie die Datei anzeigen, die UTF-8-Codierung unterstützen.

Wenn Sie dasselbe auf einer Konsole mit UTF-8-Unterstützung, z. kconsole (Teil von KDE) führt Bash unter Linux mit UTF-8 aus und zeigt dann den Text korrekt an.

0

Ich denke, es gibt zwei Möglichkeiten: Entweder sind die Zeichen falsch in der Eingabe codiert, oder sie werden falsch angezeigt, wenn Sie die Ausgabe anzeigen (wie von @Jignesh vorgeschlagen).

Um zu überprüfen, dass die Zeichen in der Eingabe korrekt sind, versuchen, einen XSLT 2.0 Prozessor wie Saxon mit und Ausführen der XPath 2.0-Ausdrucks

string-to-codepoints(//city) 

Dies werden Ihnen die Dezimalwerte des Unicode gibt Codepunkte zu entsprechenden Die Zeichen im Stadtnamen - zum Beispiel sollten 252 sein. Wenn es falsch ist, stimmt die tatsächliche Codierung der Eingabe-XML nicht mit der deklarierten Codierung überein, so dass das Zeichen falsch gelesen wurde. Wenn es korrekt ist, dann funktioniert die Ant-Task/Transformation wahrscheinlich in Ordnung, und das Problem ist Downstream, und Sie müssen genauer untersuchen, wie die Ausgabedatei verarbeitet/angezeigt wird.

0

Während des Ladens verwenden Sie die Codierung, während Sie beim Lesen keine Codierung verwenden. Ändern Sie die unterhalb der Linie :

<echo file="output.txt" append="false">${encoded_file}</echo> 

TO:

<echo encoding=:UTF-8" file="output.txt" append="false">${encoded_file} 
</echo>. 

Dies sollte das Problem lösen.

Auch Ihre erste XML-Datei sollte sein:

<?XML version="1.0" encoding="utf-8"?> 
<project name="Check" default=""> 
<xmlproperty file="test.xml" collapseAttributes="true"/> 
<echo encoding="utf-8" file="output.xml" 
     append="false">${Candidates.company}</echo> 
</project> 
Verwandte Themen