2 に答える
ファイルのエンコーディングを検出するのは難しい問題です。UTF は先頭に BOM があるため簡単ですが、それ以外の場合、エンコーディング タイプを正しく判断することはほとんど不可能です。
ただし、XML が適切にフォーマットされている場合は、エンコーディングが埋め込まれている必要があり、パーサーはそれを適切に処理する必要があります。UTF-8 から UTF-32 への変換を行っているようですが、文字列を少し大きくするだけなので、これはまったく役に立ちませんが、文字のエンコードに使用されるコードポイントは変更されません。
そのため、XML パーサーにファイルのエンコーディングを要求し、それを UTF-8 (または 32) に変更してから保存および/または処理することができるはずです。
もし私があなただったら、私は2つのことのうちの1つをします. データベースのエンコーディングがまったく入らないように、エンコーディングなしでデータベースに(ブロブとして)保存するだけです。
他にできることは、情報をデータベースにまったく保存しないことです。それをファイルに保存し(ファイルに一意のハッシュを付けます)、xmlを含むファイルの場所を保存するデータベースにテーブルを作成します。その後、ファイルから直接 xml を提供できます。