如何在 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 程序,这些程序展示了所讨论的获取和设置默认字符集方法的实际实现。

更新于: 2023 年 7 月 20 日

2K+ 阅读量

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告