ごまなつ Blog

楽しく働ける世界を目指して

xmlファイルのencodingと実際の文字コードが異なっている場合どうなるか

結論

serealizeの行でエラーになります。文字コードをそろえればうまくいきます。

背景

XMLファイルを読み書きするにはいろいろ方法がありますが、今回はシリアライズ、デシリアライズを使って読み込むことにしました。XMLファイルの構造に従ってクラスを作り、シリアライズしました。すると、シリアライズの行でエラーになりました。XMLファイルの内容をよく見ると、1行目のタグのEncodingとファイルの文字コードが食い違っていました。ファイルの文字コードを変更すると文字化けします。タグのEncodingをファイルの文字コードと揃えるとうまくいきました。

シリアライズ、デシリアライズのライブラリがある言語では文字コードとタグは勝手にそろうようになっていますが、持っておらず単純に文字列処理のみでファイルを書く場合は、設計者の勘違いなどのミスにより文字コード食い違いが起こります。変更が難しいのであれば、XMLファイルを読み込む側で処理するしかないのでしょうかね…。(デシリアライズ前に1行目を読み込んでEncodingの部分を変更する)