「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > C#でエンコードを効率的に検出する方法は?

C#でエンコードを効率的に検出する方法は?

2025-04-20に投稿しました
ブラウズ:739

How Can I Efficiently Detect a String's Encoding in C#?

c#

でエンコードする文字列の効率的な検出

文字列エンコードの正確な判断は、異なるソースからのテキストデータを処理するために重要です。この記事では、C#でこの目標を効率的に達成する方法について説明します。

コーディング手がかり

明示的な宣言なしに文字列のエンコードを決定する方法はいくつかあります:

  1. bom(byte order mark):多くのユニコードエンコーディングには、ファイルの先頭に3バイトまたは4バイトの署名が含まれているため、エンコードを示します。たとえば、UTF-8は0XEFBBBFを使用します。
  2. プローブ/ヒューリスティックチェック:文字列の最初の数バイトをチェックすることにより、エンコードを検出することができます。たとえば、UTF-8には、特定のハイビットが設定されるバイトパターンがある傾向があります。
  3. メタデータのファイル:コンテンツまたはメタデータにエンコードされた情報を埋め込んだいくつかのファイル。 「charset = xyz」や「encoding = xyz」などのテキストのパターンを見つけます。

ソリューションの概要

によって提供されるコードは、3つの方法すべてを組み合わせて、文字列のエンコードを決定します。最初はBOM検出です。 BOMが見つからない場合、コードは検出器を使用して、UTF-8やUTF-16などの一般的なエンコーディングをヒューリスティックに識別します。最後に、適切なエンコードが見つからない場合、システムのデフォルトコードページに戻ります。

このコードは、エンコードを検出するだけでなく、デコードされたテキストを返して、必要な情報を完全に提供します。

コード実装

次のC#コードがこのソリューションを実装しています:

public Encoding detectTextEncoding(string filename, out String text, int taster = 1000)
{
    // 检查BOM
    // 为简洁起见省略

    // 基于探测器的编码检测
    bool utf8 = false;
    int i = 0;
    while (i 

使用方法

このコードを使用するには、ファイルパスを文字列として提供し、検出されたエンコードおよびデコードされたテキストを出力パラメーターとして取得します。これが例です:

`` c# 文字列テキスト; エンコードencoding = detectTextEncoding( "my_file.txt"、out text); console.writeLine( "検出されたエンコード:" encoding.encodingName); console.writeline( "デコードされたテキスト:"テキスト); `` `

全体として、このコードは、C#の文字列のエンコードを決定する強力な方法を提供し、BOMおよびヒューリスティックチェックを活用して正確な検出を確保します。

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3