この記事では、java.nio.charset.CharsetDecoder を使用して文字セットを自動的に識別する方法を紹介します は、インターネット上にある文字セットを自動的に識別する方法を研究しました。サードパーティのクラスライブラリ
jchardetを使用します。実際に jchardet を使用する cpdetector もあります。 JDK の java.nio.charset.CharsetDecoder を使用して文字セットを識別できることを偶然発見しました。 1. 原則一般に、InputStreamReader を構築するには 2 つの方法があります:
InputStreamReader reader = new InputStreamReader(in, charsetName);または
InputStreamReader reader = new InputStreamReader(in, charset);文字セットが一致しない場合、 d文字が出力されます。 CharsetDecoderを使用する構築方法もあります:
CharsetDecoder cd = charset.newDecoder(); InputStreamReader reader = new InputStreamReader(in, cd);一致しない場合、
例外をスローします
:java.nio.charset.MalformedInputException: Input length = 1 at java.nio.charset.CoderResult.throwException(CoderResult.java:277) at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:338) at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:177) ....このようにして使用できます。文字セット検出として。 2. AutoCharsetReader の使用
AutoCharsetReader は、上記の原則に基づいて、Reader を参照して記述されたクラスであり、Charset 適応型の InputStreamReader とみなすことができます。
もう 1 つの例は、フルテキスト
indexを作成する Lucene の TextField には Reader パラメータが必要です。このクラスを直接使用できます:
Field field = new TextField("content", new AutoCharsetReader(file));
ファイルを読み取った後、ファイルの文字セット。読後ですのでご了承ください。
Charset charset = ar.charset();
3. 代替文字セット
文字セットを最終決定するために複数の試行が使用されるため、代替文字セットを提供する必要があります。現在のコードで提供されるデフォルトの代替文字セットは次のとおりです。
private final static String[] _defaultCharsets = { "US-ASCII", "UTF-8", "GB2312", "BIG5", "GBK", "GB18030", "UTF-16BE", "UTF-16LE", "UTF-16", "UNICODE"};
代替文字セットを変更するメソッドも提供されます。例:
AutoCharsetReader ar = new AutoCharsetReader(in).setCharset("ascii", "utf-8", "gbk");
順序は検出結果に影響します。たとえば、GBK が GB2312 より前の場合、GBK には GB2312 が含まれるため、検出結果は GB2312 ではなく GBK のみになります。
4. 文字セット検出のみ
は文字セット検出のみに使用できます:
charset = AutoCharsetReader.quickDetect(file.toURI().toURL(), charsets); or: charset = AutoCharsetReader.deepDetect(file.toURI().toURL(), charsets, stops);
quickDetect は 1 文字のみを読み取り、単一の文字セット ファイルに適しています。 HTML の場合、文字セットを知るためにすべてを読む必要がある場合があるため、deepDetect を使用します。パラメーター
charsetsは
null にすることができます。 ファイルのセットが「utf-8」であることが検出された場合、既知の可能な文字セットは「ascii」、「utf-8」、「gb2312」、および「gbk」です。または「 gbk」を使用すると、ファイルの読み取りを続行せずに、結果をすぐに返すことができます。この時点で、stops パラメータを {"utf-8", "gbk"} に割り当てることができます。
nullの場合は、すべて読む必要があります。 5. その他
効率を上げるために、このクラスにはバッファが装備されています。最初の文字セットのデコードに失敗した場合、io を再読み込みする必要はありません。バッファ サイズのデフォルトは 8192 です。オブジェクトの構築時にバッファ サイズを自分で定義できます。パラメータが 16 未満の場合は、16 に設定します。
以上がjava.nio.charset.CharsetDecoder を使用して文字セット メソッドを自動的に識別するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

この記事では、Javaプロジェクト管理、自動化の構築、依存関係の解像度にMavenとGradleを使用して、アプローチと最適化戦略を比較して説明します。

この記事では、MavenやGradleなどのツールを使用して、適切なバージョン化と依存関係管理を使用して、カスタムJavaライブラリ(JARファイル)の作成と使用について説明します。

この記事では、カフェインとグアバキャッシュを使用してJavaでマルチレベルキャッシュを実装してアプリケーションのパフォーマンスを向上させています。セットアップ、統合、パフォーマンスの利点をカバーし、構成と立ち退きポリシー管理Best Pra

この記事では、キャッシュや怠zyなロードなどの高度な機能を備えたオブジェクトリレーショナルマッピングにJPAを使用することについて説明します。潜在的な落とし穴を強調しながら、パフォーマンスを最適化するためのセットアップ、エンティティマッピング、およびベストプラクティスをカバーしています。[159文字]

Javaのクラスロードには、ブートストラップ、拡張機能、およびアプリケーションクラスローダーを備えた階層システムを使用して、クラスの読み込み、リンク、および初期化が含まれます。親の委任モデルは、コアクラスが最初にロードされ、カスタムクラスのLOAに影響を与えることを保証します


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

WebStorm Mac版
便利なJavaScript開発ツール

メモ帳++7.3.1
使いやすく無料のコードエディター

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

SublimeText3 中国語版
中国語版、とても使いやすい

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター
