我正在尝试使用中文字符编码器 GB2312 保存文本文件。根据该文档,GB2312 支持西里尔字符。不幸的是,java 无法以 GB2312 编码保存 Cyrillic 字符。我使用了下面的代码。
问:java的编码器是不是完全支持GB2312支持的所有字符?如何查看特定编码器中所有支持的字符?
Files.write(Path.of("output_gb2312.txt"), List.of("АБВГДЕЁЖЗИЙКЛМНОӨПРСТУҮФХЦЧШЩЪЫЬЭЮЯ"), Charset.forName("GB2312"));
输出:
Exception in thread "main" java.nio.charset.UnmappableCharacterException: Input length = 1
at java.base/java.nio.charset.CoderResult.throwException(CoderResult.java:275)
at java.base/sun.nio.cs.StreamEncoder.implWrite(StreamEncoder.java:307)
at java.base/sun.nio.cs.StreamEncoder.implWrite(StreamEncoder.java:282)
at java.base/sun.nio.cs.StreamEncoder.write(StreamEncoder.java:132)
at java.base/java.io.OutputStreamWriter.write(OutputStreamWriter.java:205)
at java.base/java.io.BufferedWriter.flushBuffer(BufferedWriter.java:120)
at java.base/java.io.BufferedWriter.close(BufferedWriter.java:268)
at java.base/java.nio.file.Files.write(Files.java:3587)