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 学習
2. 例:
テキスト ファイルがあります: test.txt
テスト コード:
/** * 文件名: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はテキストファイルの文字エンコーディングの取得を実装します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。