如何在 Java 中获取和设置默认字符编码或字符集?
在 Java 中,默认字符编码由“file.encoding”决定,它是一个系统属性,通常由操作系统或 JVM 设置。但是,有时 Java 程序员可能需要出于各种原因以编程方式获取或设置默认字符编码。为此,“java.nio.charset”包提供了各种类和方法。在本文中,我们将学习获取和设置默认字符编码或字符集的不同方法。
在 Java 中获取和设置默认字符编码或字符集
首先,让我们讨论什么是默认字符编码或字符集。
默认字符编码
字符编码或字符集是将字符集映射到字节序列的一种方式。但是,为什么我们需要映射呢?答案如下:我们知道计算机系统中的数据以字节的形式表示,但我们使用称为字符串的字符序列与计算机交互。因此,我们需要将字节映射到字符,以便 JVM 能够识别哪些字节集代表哪个字符。此外,不同的字符编码可能使用不同数量的字节来表示相同的字符,或者可能完全支持不同的字符集。例如,ASCII 是一种 7 位编码,可以表示 128 个字符,而 UTF-8 是一种可变长度编码,可以表示超过一百万个字符。
获取默认字符编码或字符集
我们将在示例程序中使用以下方法来查找默认字符编码或字符集
file.encoding:它是“System.getProperty()”方法的一个属性,用于返回字符集的值。
defaultCharset() 方法:它是“java.nio.charset”包中的一个方法,用于检索 Java 虚拟机的默认字符编码。
getEncoding() 方法:它是“java.io.FileReader”类中的一个方法,用于检索流的默认字符编码。
示例 1
在下面的示例中,我们将演示使用“file.encoding”属性和“defaultCharset()”方法获取默认字符编码。
import java.nio.charset.Charset; public class GetDefaultCharset { public static void main(String[] args) { // to get the default charset Charset defaultCharset1 = Charset.defaultCharset(); String defaultCharset2 = System.getProperty("file.encoding"); // printing the name of default charset System.out.println("Default charset1: " + defaultCharset1.name()); System.out.println("Default charset2: " + defaultCharset2); } }
输出
Default charset1: UTF-8 Default charset2: UTF-8
示例 2
在此示例中,我们将创建一个字符的字节数组,并将它们作为流传递以使用“getEncoding()”方法检查其当前字符编码。
import java.io.*; import java.nio.charset.Charset; public class GetDefaultCharset { public static void main(String args[]) { // creating an array of byte byte[] chAray = {'T','U','T','O','R','I','A','L'}; // converting the array into stream InputStream inStrm = new ByteArrayInputStream(chAray); // reading the stream InputStreamReader strmRdr = new InputStreamReader(inStrm); // checking and printing the charset String defaultCharset = strmRdr.getEncoding(); System.out.println("Default charset: " + defaultCharset); } }
输出
Default charset: UTF8
设置默认字符编码或字符集
我们可以使用“System.setProperty()”并传递“file.encoding”属性以及 Charset 类型来设置默认字符编码。
示例 3
以下示例说明如何在 Java 中设置默认字符编码。
import java.nio.charset.Charset; public class SetDefaultCharset { public static void main(String[] args) { // setting the default charset to ISO-8859-1 System.setProperty("file.encoding", "ISO-8859-1"); // to get the new default charset Charset defaultCharset = Charset.defaultCharset(); // printing the name and aliases of default charset System.out.println("Default charset: " + defaultCharset.name()); System.out.println("Aliases: " + defaultCharset.aliases()); } }
输出
Default charset: UTF-8 Aliases: [unicode-1-1-utf-8, UTF8]
结论
在本文中,我们学习了在 Java 中获取和设置默认字符编码的各种方法,并借助示例程序进行了说明。首先,我们了解了默认字符集的基础知识,然后讨论了三个 Java 程序,这些程序展示了所讨论的获取和设置默认字符集方法的实际实现。