libxml を使用して一部の html ファイルを解析しているときに、関数 xmlParseFile() が、コードに非 UTF-8 文字が含まれていることを返します。ライブラリのデフォルトの文字セットを ISO-8859-1 に変更するにはどうすればよいですか? これを解決する他の方法はありますか?
PS: 開発全体は libxml に基づいており、ほとんどの場合に機能するため、別のライブラリに切り替えることはできません。
libxml を使用して一部の html ファイルを解析しているときに、関数 xmlParseFile() が、コードに非 UTF-8 文字が含まれていることを返します。ライブラリのデフォルトの文字セットを ISO-8859-1 に変更するにはどうすればよいですか? これを解決する他の方法はありますか?
PS: 開発全体は libxml に基づいており、ほとんどの場合に機能するため、別のライブラリに切り替えることはできません。
XML データに使用されるエンコーディングは、XML のプロローグで指定する必要があります。エンコーディングが指定されていない場合、W3 の XML 仕様では、代わりに UTF-8 を想定する必要があると規定されています。
HTML データの解析に XML パーサーを使用するのはなぜですか? libxml には、XML パーサーとは別の HTML パーサーがあります。htmlParseFile() と関連する関数を見てください。HTML は XML ではないため、データのエンコードを示す XML プロローグは存在しません。ただし、 HTML には、<meta>
そのタグ内で使用できるタグが<head>
あります。libxml の HTML パーサーは、明示的に htmlParseFile() に直接渡されない限り、エンコーディングを決定するためにそのタグを探します。