0

我试图在 Windows 7 机器中保存一个 .txt 文件,因为它是 JAVA 代码,并且它以 ANSI 编码代码,但是当我在 Windows Server 2000 中执行相同操作时,代码以 UTF 保存。

我正在做不同的测试,并且我检查了每次在 Windows Server 2000 中运行代码时编码是否发生了变化,而代码没有变化。

我将文件保存在一个 zip 文件中,代码是下一个(我已将“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();
    }
}

感谢您的帮助和回答和问候

4

1 回答 1

0

这是因为 JVM 的默认编码。

检查此问题以了解如何更改默认编码:设置默认 Java 字符编码?

并检查此外部文章以设置特定文件的编码: http ://www.mkyong.com/java/how-to-write-utf-8-encoded-data-into-a-file-java/

于 2016-04-11T09:32:18.637 回答