Java 如何获取和设置默认字符编码或字符集

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’属性和字符集类型来设置默认的字符编码。

示例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程序,展示了获取和设置默认字符集的实际实现方式。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程