Странный символьный результат в xml по коду Java - PullRequest
2 голосов
/ 01 июня 2011

Я генерирую XML, читая текстовую форму .txt файл. Но я получил странные результаты характера. Я хочу видеть мой текст в XML так же, как это показано в файле .txt.

вот мой текст из .txt файла

žena
muškarac
devojčica
dečak
Automobil
* 1010 Autobus * Drvo
kuća
Avion
MACKA
па
цвет

и вот мой странный результат в xml.

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<resources>
    <string name="0s0">žena</string>
    <string name="1s1">muškarac</string>
    <string name="2s2">devoj�ica</string>
    <string name="3s3">de�ak</string>
    <string name="4s4">automobil</string>
    <string name="5s5">autobus</string>
    <string name="6s6">drvo</string>
    <string name="7s7">kuća</string>
    <string name="8s8">avion</string>
    <string name="9s9">ma�ka</string>  

Вот мой код.

          FileInputStream fstream = new FileInputStream("D:/12.txt"); // Path of input text file 
          BufferedReader br = new BufferedReader(new InputStreamReader(fstream));
          String strLine;

          DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
          DocumentBuilder docBuilder = docFactory.newDocumentBuilder();

          //root elements
          Document doc = docBuilder.newDocument();
          Element rootElement = doc.createElement("resources");
          doc.appendChild(rootElement);

          int i = 0;
          String attrName;
          //Read File Line By Line
          while ((strLine = br.readLine()) != null)   {

              attrName = i+"s"+i;
              i++;

              //staff elements
              Element string = doc.createElement("string");
              rootElement.appendChild(string);

              //set attribute to staff element
              Attr attr = doc.createAttribute("name");
              attr.setValue(attrName);
              string.setAttributeNode(attr);
              string.appendChild(doc.createTextNode(strLine));

          }
          //Close the input stream
          in.close();

          //write the content into xml file
          TransformerFactory transformerFactory = TransformerFactory.newInstance();
          Transformer transformer = transformerFactory.newTransformer();
          DOMSource source = new DOMSource(doc);
          StreamResult result =  new StreamResult(new File("D:\\italian.xml")); // Path of output text file
          transformer.transform(source, result);

          System.out.println("Done");        

Я изучил здесь много постов, но не смог найти решение по своему желанию. Просто я хочу видеть те же символы / текст в файле XML, как они показаны в файле .txt.

Ответы [ 3 ]

4 голосов
/ 01 июня 2011

Необходимо указать правильную кодировку / кодировку при использовании InputStreamReader . Попробуйте это:

... new InputStreamReader(in, "UTF-8");
1 голос
/ 01 июня 2011

У вас две проблемы.

  1. Вы не знаете, в какой кодировке находится ваш .txt-файл. Вам необходимо прочитать его с правильной кодировкой, возможно, UTF-8.Когда вы просто используете new InputStreamReader() без указания кодировки, java будет использовать кодировку платформы по умолчанию, что эквивалентно использованию случайной кодировки.

  2. XML-файл хранится с кодировкой UTF-8 что по умолчанию.Если вы хотите прочитать его в текстовом редакторе, вам нужен редактор, который поддерживает UTF-8.

1 голос
/ 01 июня 2011

Попробуйте установить кодировку inputStreamReader, например

new InputStreamReader(in, "UTF-8");

Если это не сработает, попробуйте выяснить, какую кодировку использует ваш файл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...