XMLファイルを読み込み、関連するビットを抽出してデータベースに挿入するはずのc#.netで書かれたXMLローダークラスがあります。これまでのところは普通です。XMLパーサが突然ファイルの途中で以前の解析されたラテン文字でチョークする
しかし、ラテン文字を含む1つの特定のファイルに遭遇したとき、私は実際のヘッドスクラッチャーにその動作を教えています。それはファイルの大部分を読み込んだ後、非常に突然、非標準文字に不正な文字エラーをスローします。これはすでに何度も正常に処理されています。
DBException:[表]にエラーバルクコピーテーブル---> System.Xml.XmlException:所与のエンコードに無効な文字。ライン 182078、位置は47
これはすでにライン506、999、1039および他の多くで正常に処理されている文字nに投げられました。私は彼らが同じ実際のキャラクターであることを16進エディタでチェックしました:U + 00F1 - c3 b1ラテン小さな文字とチルド。
私はそれが突然問題になる原因は何もわかりません。この問題は、それ自体で新しいファイルに問題を引き起こしたフラグメントをコピーしてそこからロードしようとすると、フラグメントが何であるかに関係なく、エスケープ文字ではないようです。
本当にこの1つに私の頭を傷つける - 提案は非常に感謝しています。
乾杯、 マット
*バイト*をその文字の周りのファイルと宣言されたエンコーディングに投稿してください。 –
私は彼らが何であるかを発見するためにどのように進むことができるかについての提案はありますか?私は16進エディタNeoを使ってエンコーディングを取得しています。 –
Neoを使ってファイルの適切な領域にアクセスし(コンテキストに基づいて)、ファイルの先頭に*指定されていると思われるエンコーディングとともに正確なバイトをポストします。 –