gpt4 book ai didi

java - 将文件utf8转换为utf16 java

转载 作者:行者123 更新时间:2023-11-30 06:01:33 25 4
gpt4 key购买 nike

我正在尝试使用 Java 应用程序将文件从 UTF-8 转换为 UTF-16

但是我的输出结果是这样的蓘Ꟙ괠�Ꟙ돘ꨊ੕与潦楣楣楯港渮瑬瑬举摽扙摠摤摹晩晩潮潮潮楮㷘께뇛賘꼠楙藙漽掩虡慢敬⹏扒敲摅摎潴楣楣楯楯汵杩渽�藘귘뗙裙萠摠旘꿛賘뇛賘ꨠ

最终输出应该是一样的utf8= 和 utf16=\u0633\u0644\u0627\u0645

import java.io.*;

class WriteUTF8Data<inbytes> {
WriteUTF8Data() throws UnsupportedEncodingException {
}

public static void main(String[] args) throws IOException {
System.setProperty("file.encoding","UTF-8");

byte[] inbytes = new byte[1024];

FileInputStream fis = new FileInputStream("/home/mehrad/Desktop/PerkStoreNotification(1).properties");
fis.read(inbytes);
FileOutputStream fos = new FileOutputStream("/home/mehrad/Desktop/PerkStoreNotification(2).properties");
String in = new String(inbytes, "UTF16");
fos.write(in.getBytes());
}
}

最佳答案

您当前正在从 UTF-16 转换为您的系统默认编码。如果要从 UTF-8 转换,则需要在转换二进制数据时指定它。您的代码还有其他问题 - 您假设 InputStream.read读取整个缓冲区,这就是文件中的全部内容。你最好使用 Reader和一个 Writer ,循环并读入一个 char 数组,然后将该 char 数组的相关部分写入 writer。

这是执行此操作的一些示例代码。现在这可能不是最好的方法,但它至少应该有效:

import java.io.*;
import java.nio.charset.*;
import java.nio.file.*;

public class ConvertUtf8ToUtf16 {

public static void main(String[] args) throws IOException {
Path inputPath = Paths.get(args[0]);
Path outputPath = Paths.get(args[1]);

char[] buffer = new char[4096];
// UTF-8 is actually the default for Files.newBufferedReader,
// but let's be explicit.
try (Reader reader = Files.newBufferedReader(inputPath, StandardCharsets.UTF_8)) {
try (Writer writer = Files.newBufferedWriter(outputPath, StandardCharsets.UTF_16)) {
int charsRead;

while ((charsRead = reader.read(buffer)) != -1) {
writer.write(buffer, 0, charsRead);
}
}
}
}
}

关于java - 将文件utf8转换为utf16 java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57238909/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com