2016-04-11 8 views
0

Я пытаюсь сохранить файл .txt с JAVA-кода на машине под управлением Windows 7, и он кодирует код в ANSI, но когда я делаю то же самое в Windows Server 2000, код сохраняется в UTF.Мой код JAVA сохраняет .txt в другой кодировке (ANSI, UTF, ...) в зависимости от операционной системы

Я делаю разные тесты, и я проверил, что кодировка меняется, когда я запускаю код каждый раз в Windows Server 2000 без изменений кода.

I'm сохранении файла в почтовый файл и код следующего (я изменил «CP1252» на «ISO-8859-1», но результат тот же):

public byte[] getBytesZipFile(String nombreFichero, String input) throws IOException { 

    String tempdir = System.getProperty("java.io.tmpdir"); 
    if (!(tempdir.endsWith("/") || tempdir.endsWith("\\"))) { 
     tempdir = tempdir + System.getProperty("file.separator"); 
    } 

    File tempFile = new File(tempdir + nombreFichero + ".txt"); 
    try { 
     BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(tempFile), "Cp1252")); 

     bufferedWriter.write(input); 
     bufferedWriter.flush(); 
     bufferedWriter.close(); 

     ByteArrayOutputStream byteArrayOutputStreambos = new ByteArrayOutputStream(); 
     ZipOutputStream zipOutputStream = new ZipOutputStream(byteArrayOutputStreambos); 

     FileInputStream fileInputStream = new FileInputStream(tempFile); 

     zipOutputStream.putNextEntry(new ZipEntry(tempFile.getName())); 

     byte[] buf = new byte[1024]; 

     int len; 
     while ((len = fileInputStream.read(buf)) > 0) { 
      zipOutputStream.write(buf, 0, len); 
     } 

     zipOutputStream.closeEntry(); 
     fileInputStream.close(); 

     zipOutputStream.flush(); 
     zipOutputStream.close(); 

     return byteArrayOutputStreambos.toByteArray(); 
    } finally { 
     tempFile.delete(); 
    } 
} 

Спасибо за помощь и ответы и приветствует

+0

Какова ваша версия JVM? – adranale

+0

Я делаю тесты с 6 и 7, и результат тот же. –

+0

Я удивлен, что Java 6 и 7 могут даже работать в Windows Server 2000. –

ответ

0

Это из-за кодировки по умолчанию JVM.

Проверить этот вопрос о том, как изменить кодировку по умолчанию: Setting the default Java character encoding?

И проверить этот внешний articel для установки кодировки вашего конкретного файла: http://www.mkyong.com/java/how-to-write-utf-8-encoded-data-into-a-file-java/

+0

В его коде используется явное кодирование, поэтому это объяснение маловероятно. –

+0

Только в создании текстового файла. Не в чтении файла или создании zip – Leo