Java:以UTF-32格式写入文件

Java:以UTF-32格式写入文件,java,unicode,randomaccessfile,Java,Unicode,Randomaccessfile,是否可以将字符串写入utf-32格式的文件?例如:RandomAccessFile类仅提供writeUTF()方法,该方法以修改的UTF-8格式写入字符串。 假设我的任务是将所有现有的unicode字符写入一个文件:)。您应该将字符串转换为UTF-32格式的字节,然后将这些字节写入随机文件 RandomAccessFile file = ... String str = "Hi"; byte[] bytes = str.getBytes("UTF-32"); file.write(bytes);

是否可以将字符串写入utf-32格式的文件?例如:RandomAccessFile类仅提供writeUTF()方法,该方法以修改的UTF-8格式写入字符串。
假设我的任务是将所有现有的unicode字符写入一个文件:)。

您应该将字符串转换为UTF-32格式的字节,然后将这些字节写入随机文件

RandomAccessFile file = ...
String str = "Hi";
byte[] bytes = str.getBytes("UTF-32");
file.write(bytes);

您应该将字符串转换为UTF-32格式的字节,然后将这些字节写入随机文件

RandomAccessFile file = ...
String str = "Hi";
byte[] bytes = str.getBytes("UTF-32");
file.write(bytes);

您可以使用
BufferedWriter

public class SampleCode {

    public static void main(String[] args) throws IOException {
        String aString = "File contents";
        BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("outfilename"), "UTF-32"));
        try {
            out.write(aString);
        } finally {
            out.close();
        }

    }
}
或者你可以用

类似地,类java.io.OutputStreamWriter充当字符流和字节流之间的桥梁。使用此类创建一个编写器,以便能够将字节写入文件:

也可以使用如下字符串格式:

public static String convertTo32(String toConvert){
    for (int i = 0; i < toConvert.length(); ) {
        int codePoint = Character.codePointAt(toConvert, i);
        i += Character.charCount(codePoint);
        //System.out.printf("%x%n", codePoint);
        String utf32 = String.format("0x%x%n", codePoint);
        return utf32;
    }
    return null;
}
publicstaticstringconvertto32(stringtoconvert){
对于(int i=0;i

请参阅。

您可以使用
BufferedWriter

public class SampleCode {

    public static void main(String[] args) throws IOException {
        String aString = "File contents";
        BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("outfilename"), "UTF-32"));
        try {
            out.write(aString);
        } finally {
            out.close();
        }

    }
}
或者你可以用

类似地,类java.io.OutputStreamWriter充当字符流和字节流之间的桥梁。使用此类创建一个编写器,以便能够将字节写入文件:

也可以使用如下字符串格式:

public static String convertTo32(String toConvert){
    for (int i = 0; i < toConvert.length(); ) {
        int codePoint = Character.codePointAt(toConvert, i);
        i += Character.charCount(codePoint);
        //System.out.printf("%x%n", codePoint);
        String utf32 = String.format("0x%x%n", codePoint);
        return utf32;
    }
    return null;
}
publicstaticstringconvertto32(stringtoconvert){
对于(int i=0;i

请参阅。

我认为您可以使用此UTF-32LE或UTF-32BE?我认为您可以使用此UTF-32LE或UTF-32BE?虽然您的第一个解决方案很好,但
convertTo32
有缺陷,java中的字符串内部始终具有UTF16编码,并且不能表示其他内容,因此,
字符串utf32
应该在循环上方声明,并
返回utf32
应该在循环之后,否则,循环就没有任何意义了。当你直接使用时,确保正确地对它们进行属性划分,否则这就叫做剽窃。虽然你的第一个解决方案很好,但是
convertTo32
有缺陷,java中的字符串内部总是使用UTF16编码,并且不能表示其他内容,因此,
字符串utf32
应该在循环上方声明,并且
返回utf32
应该在循环之后,否则,拥有循环就没有意义了。当你直接使用时,确保它们的属性正确,否则称为剽窃。