如何在 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+ 閱讀量

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告