「NTS」を利用し、shpファイル(属性がSJIS)を読み込むと文字化けが発生

「NTS」を利用して、.shpファイル(属性がSJIS)を読み込むと文字化けが発生しました。
shpファイルのルールでは、.cpgファイルに文字コード指定すると、その文字コードで、
.dbfファイルが読み込まれるはずですが認識されていないようでした。

※以下、対策前のQGISでの属性確認

1.原因分析1

NTSでは、.dbfファイルを読み込む前に、ヘッダ情報を読み込んでいます。
その際、cpgファイルがあれば、cpgファイルの文字コードを利用するはずです。
ですが、デバッグしてみると、文字コードを取得する、以下DbaseFileHeaderクラス
のメソッドで、cpgファイルを読み込む前に、Encoding.UTF8を返していました。

2.対策1

DetectEncodingFromMark()メソッドでは、デフォルトではUTF8を返しているので、
以下のようにデフォルトの文字コードをSJISに設定すると、SJIS返却されます。

3.対策2

上記対策では、cpgファイルが無視されるので、
以下のように、デフォルト値の返却をコメント化すればcpgファイルの値が返却されます。

※以下、対策後のQGISでの属性確認

Print Friendly, PDF & Email

シェアする

  • このエントリーをはてなブックマークに追加

フォローする