ホームページ  >  記事  >  Java  >  Javaはテキストファイルの文字エンコーディングの取得を実装します。

Javaはテキストファイルの文字エンコーディングの取得を実装します。

王林
王林転載
2019-12-23 11:49:4912087ブラウズ

Javaはテキストファイルの文字エンコーディングの取得を実装します。

1. 文字エンコーディングについて:

1. Java の文字列のデフォルトのエンコーディングは UTF-8 であり、次のステートメントを使用して取得できます: Charset.defaultCharset( );

2. Windows オペレーティング システムでは、テキスト ファイルのデフォルトのエンコードは ANSI (中国語 Windows の場合は GBK) です。たとえば、メモ帳プログラムを使用して新しいテキスト文書を作成する場合、デフォルトの文字エンコードは ANSI です。

3. テキスト テキスト ドキュメントには、ANSI、Unicode (Unicode ビッグ エンディアンおよび Unicode リトル エンディアンを含む)、UTF-8、UTF-16

4 の 4 つのエンコード オプションがあるため、txt ファイルを読み取ります。エンコード形式がわからない場合があるため、プログラムを使用して txt ファイルのエンコードを動的に決定する必要があります。

ANSI : フォーマット定義はありません。中国語のオペレーティング システムの場合は GBK または GB2312 です。

UTF-8 : 最初の 3 バイトは、0xE59B9E (UTF-8)、0xEFBBBF (UTF-8 を含む) です。 BOM)

UTF-16: 最初の 2 バイトは: 0xFEFF

Unicode: 最初の 2 バイトは: 0xFFFE

例: Unicode ドキュメントは 0xFFFE で始まります。プログラムは最初の数バイトを取り出して判断するだけです。

5. Javaエンコーディングとテキストエンコーディングの対応:

Javaはテキストファイルの文字エンコーディングの取得を実装します。

Javaはテキストファイルを読み込むため、エンコーディング形式が一致していないと文字化けが発生します。そのため、テキストファイルを読み込む際には正しい文字コードを設定する必要があります。テキスト文書のエンコード形式はファイルのヘッダーに記述されており、プログラムではまずファイルのエンコード形式を解析する必要があります。エンコード形式を取得した後、この形式でファイルを読み込むことで文字化けを回避できます。

無料のオンライン ビデオ チュートリアルの推奨事項: java 学習

2. 例:

テキスト ファイルがあります: test.txt

Javaはテキストファイルの文字エンコーディングの取得を実装します。

テスト コード:

/**
 * 文件名:CharsetCodeTest.java
 * 功能描述:文件字符编码测试
 */
 
import java.io.*;
 
public class CharsetCodeTest {
    public static void main(String[] args) throws Exception {
        String filePath = "test.txt";
        String content = readTxt(filePath);
        System.out.println(content);
    }
 
 
public static String readTxt(String path) {
        StringBuilder content = new StringBuilder("");
        try {
            String fileCharsetName = getFileCharsetName(path);
            System.out.println("文件的编码格式为:"+fileCharsetName);
 
            InputStream is = new FileInputStream(path);
            InputStreamReader isr = new InputStreamReader(is, fileCharsetName);
            BufferedReader br = new BufferedReader(isr);
 
            String str = "";
            boolean isFirst = true;
            while (null != (str = br.readLine())) {
                if (!isFirst)
                    content.append(System.lineSeparator());
                    //System.getProperty("line.separator");
                else
                    isFirst = false;
                content.append(str);
            }
            br.close();
        } catch (Exception e) {
            e.printStackTrace();
            System.err.println("读取文件:" + path + "失败!");
        }
        return content.toString();
    }
 
 
    public static String getFileCharsetName(String fileName) throws IOException {
        InputStream inputStream = new FileInputStream(fileName);
        byte[] head = new byte[3];
        inputStream.read(head);
 
        String charsetName = "GBK";//或GB2312,即ANSI
        if (head[0] == -1 && head[1] == -2 ) //0xFFFE
            charsetName = "UTF-16";
        else if (head[0] == -2 && head[1] == -1 ) //0xFEFF
            charsetName = "Unicode";//包含两种编码格式:UCS2-Big-Endian和UCS2-Little-Endian
        else if(head[0]==-27 && head[1]==-101 && head[2] ==-98)
            charsetName = "UTF-8"; //UTF-8(不含BOM)
        else if(head[0]==-17 && head[1]==-69 && head[2] ==-65)
            charsetName = "UTF-8"; //UTF-8-BOM
 
        inputStream.close();
 
        //System.out.println(code);
        return charsetName;
    }
}

実行結果:

Javaはテキストファイルの文字エンコーディングの取得を実装します。

推奨される関連記事とチュートリアル: Java 入門

#

以上がJavaはテキストファイルの文字エンコーディングの取得を実装します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcsdn.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。