2010-12-06 9 views
0

バイト配列から文字列を抽出しています。文字列はSQLスクリプトです。System.Text.Encoding.GetEncoding.GetStringを使用する場合の迷惑メール

String sql = System.Text.Encoding.GetEncoding(1200).GetString(script); 

最初の文字がジャンク(正方形のプレビューボックス)に出ています。そのため、スクリプト全体が失敗しています。なぜこれが起こっているのか?

最初の文字を削除したくないです。なぜ、どのようにこれを避けることができるかを知ることにもっと興味があります。

+0

'System.Text.Encoding.GetEncoding'と' System.Text.UTF32Encoding.GetEncoding'の間に違いはありません。人を混乱させる可能性があるので、 'UTF32Encoding'への参照を削除しました。 – dtb

+0

実際のバイト列はありますか? –

+0

@lganacio:実際のシーケンス? 'script'はバイト配列です。 –

答えて

2

最初の文字はおそらくByte Order Marks (BOM)です。

あなたは自動的にBOMを検出し、適切なエンコーディングを選択するようにStreamReaderを使用することができます。

byte[] script; 
string sql; 

using (var reader = new StreamReader(new MemoryStream(script), true)) 
{         //       ↑ 
    sql = reader.ReadToEnd();  //  detectEncodingFromByteOrderMarks 
} 
関連する問題