gpt4 book ai didi

java - 在java运行时更新默认字符集编码?

转载 作者:行者123 更新时间:2023-12-01 17:32:55 26 4
gpt4 key购买 nike

有没有办法在java运行时更新默认的字符集编码?谢谢,

最佳答案

不,没有实际的方法可以改变它。例如,在 OpenJDK 中,当虚拟机启动时,默认字符集几乎是从 file.encoding 系统属性中读取的,并将其存储在 Charset 类中的私有(private)静态字段中。如果您需要使用不同的编码,您应该使用允许指定编码的类。

您也许可以通过反射更改私有(private)字段来侵入。如果您真的、真的没有其他选择,您可以尝试一下。您将代码定位到特定 JVM 的特定版本,并且它可能不适用于其他版本。这是在当前版本的 OpenJDK 中更改默认字符集的方法:

import java.nio.charset.Charset;
import java.lang.reflect.*;

public class test {
public static void main(String[] args) throws Exception {
System.out.println(Charset.defaultCharset());
magic("latin2");
System.out.println(Charset.defaultCharset());
}

private static void magic(String s) throws Exception {
Class<Charset> c = Charset.class;
Field defaultCharsetField = c.getDeclaredField("defaultCharset");
defaultCharsetField.setAccessible(true);
defaultCharsetField.set(null, Charset.forName(s));
// now open System.out and System.err with the new charset, if needed
}
}

关于java - 在java运行时更新默认字符集编码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9282990/

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