2013-05-30 3 views
2

У меня проблема с кодировкой файлов. У меня есть метод, который экспортирует мою БД в XML в формате, который я создал. Проблема в том, что файл создается с помощью ANSI-кодировки, и мне нужно Кодировка UTF-8 (некоторые испанские символы не отображаются на ANSI).Как создать файл utf8 из объекта stringbuilder в Java

XML-файл создается из объекта StringBuilder: Я записываю данные из своей БД в этот объект StringBuilder и когда я скопировал все данные, которые я создаю.

Любая помощь с благодарностью принимается. Спасибо в advace.

Edit: Это часть моего источника: XMLBuilder класс:

... 
    public XmlBuilder() throws IOException { 
     this.sb = new StringBuilder(); 
    } 
... 
    public String xmlBuild() throws IOException{ 
     this.sb.append(CLOSE_DB); 
     return this.sb.toString(); 
    } 
... 

Класс обслуживания, где я генерировать файл XML:

XmlBuilder xml = new XmlBuilder(); 
... (adding to xml)... 
xmlString = xml.build(); 
file = createXml(xmlString); 
... 

createXml:

public File createXml(String textToFile) { 
    File folder = new File("xml/exported/"); 
    if (!folder.exists()) { 
     folder.mkdirs(); 
    } 
    file = new File("xml/exported/exportedData.xml"); 

    try (FileOutputStream fop = new FileOutputStream(file)) { 

    // if file doesn't exists, then create it 
    if (!file.exists()) { 
     file.createNewFile(); 
    } 
    //if file exists, then delete it and create it 
    else { 
     file.delete(); 
     file.createNewFile(); 
    } 

    // get the content in bytes 
    byte[] contentInBytes = textToFile.getBytes(); 

    fop.write(contentInBytes); 
    fop.flush(); 
    fop.close(); 

    System.out.println("Done"); 

    } catch (IOException e) { 
    e.printStackTrace(); 
    } 
    return file; 
} 
+0

Можете ли вы показать нам код, в котором вы пишете файл? Обычно вы можете предоставить кодировку в качестве дополнительного параметра. – Keppil

+0

Спасибо за ваш ответ @Keppil. Я только что редактировал свой вопрос с исходным кодом. – Alberto

+0

Попробуйте ответить @ Keith ниже, я думаю, что он должен работать. – Keppil

ответ

1
File file = new File("file.xml"); 
    Writer writer = new OutputStreamWriter(new FileOutputStream(file), "UTF-8"); 
    writer.write("<file content>"); 
    writer.close(); 
+0

Большое спасибо @ Keith. Я попробую это завтра. Если это сработает, я отвечу на ваш ответ :) – Alberto

+0

Hi @Keith. Я только что попробовал, но кодировка файлов по-прежнему обнаруживается как «ANSI как UTF-8», но теперь все символы отображаются правильно. Спасибо за вашу помощь. – Alberto

+0

Вы можете попробовать явно написать BoM, '\ uFEFF' в начале файла. Это может помочь другим программам определить правильную кодировку. – rossum