9

我有一个文本文件,它是 ANSI 编码,我必须将其转换为 UTF8 编码。

我的文本文件是这样的 Stochastic programming is an area of mathematical programming that studies how to model decision problems under uncertainty. For example, although a decision might be necessary at a given point in time, essential information might not be available until a later time.

4

4 回答 4

9

您可以明确使用 java.nio.charset.Charset 类(windows-1252 是 ANSI 的正确名称):

public static void main(String[] args) throws IOException {
    Path p = Paths.get("file.txt");
    ByteBuffer bb = ByteBuffer.wrap(Files.readAllBytes(p));
    CharBuffer cb = Charset.forName("windows-1252").decode(bb);
    bb = Charset.forName("UTF-8").encode(cb);
    Files.write(p, bb.array());
}

或者如果您愿意,可以在一行中 =)

Files.write(Paths.get("file.txt"), Charset.forName("UTF-8").encode(Charset.forName("windows-1252").decode(ByteBuffer.wrap(Files.readAllBytes(Paths.get("file.txt"))))).array());
于 2013-08-09T06:45:24.113 回答
0

ASCII 字符子集映射到 UTF8 中的相同字符编码,因此文件实际上不需要任何转换。

要以 UTF-8 格式输出文件,您可以使用:

PrintWriter out = new PrintWriter(new File(filename), "UTF-8");
out.print(text);
out.close();
于 2013-08-09T06:33:21.590 回答
0

你可以试试这个

InputStream inputStream = new BufferedInputStream(new FileInputStream("D:\\sample.txt"));
    Reader reader =
            new InputStreamReader(inputStream, Charset.forName("UTF-8"));
于 2013-08-09T06:34:15.993 回答
0

我不是专家,但在这里找到了一个可以帮助您的链接:Converting a txt File from ANSI to UTF-8 programmatically

这里解释了一些与此相关的问题:http ://www.drillio.com/en/software-development/java/encoded-string-too-long-64kb-limit/

我希望这有帮助。

于 2013-08-09T06:37:28.177 回答