Shapefileデータソースのエンコードを変更しますか?


9

プロパティを介してシェープファイルデータソースエンコーディングのみを変更しようとしました。また、シェープファイルをLATIN1からUTF-8にエンコードする方法も変更しましたか?しかし、それはそれを変更しません。

QGISプロジェクトを保存しないと、シェープファイルデータソースのエンコードを直接変更できませんか?

私もこのコードを試しましたが、変更エンコーディングを示していますが、シェープファイルをもう一度開くと、同じ古いシステムエンコーディングが示されています。

for layer in QgsMapLayerRegistry.instance().mapLayers().values():
    layer.setProviderEncoding(u'UTF-8')
    layer.dataProvider().setEncoding(u'UTF-8')
    print layer.name(), layer.dataProvider().encoding()  

(QGISプロジェクトを保存せず、シェイプファイルに直接アクセスして保存します。プロジェクトを保存してこのタスクを実行すると、正しく機能します


プラグイン内のコードを確認できます:shapefile_encoding_fixer
Jakob

プロジェクトを保存せずにqgisを介してシェープファイルに保存できますか?
Muhammad Faizan Khan 2016

レイヤーを右クリックしてSave As...オプションを使用してみましたか?
ジョセフ

@Josephはい、もちろん男性です。私はすでにその回答を私の投稿で述べています!開いているシェイプファイルをqgisプロジェクトに送り、別名で保存してエンコードを変更しますが、もう一度開くと、システムに残ります(変更されません)。
ムハンマドファイザンカーン2016

@ジョセフqgisプロジェクトを保存しませんでした。qgisプロジェクトを保存し、それを介してシェイプファイルを開くと、正しく機能します。
Muhammad Faizan Khan 2016

回答:


13

メニューバーから次の場所に移動します。

Settings > Options > Data Sources > Data source handling

[ シェープファイルエンコーディング宣言を無視する]チェックボックスをオフにします。

エンコーディング設定

これにより、QGISにロードされたすべてのレイヤーがデフォルトでエンコードされるように設定されます UTF-8


1
さらに@Josephに感謝します。今後のユーザーにとって、このリンクも役立つhub.qgis.org/issues/13203に感謝します。[シェープファイルエンコーディング宣言を実際に無視する]チェックボックスをオンにすると、utf-8設定が無視されます。無視する.cpgファイル。
ムハンマドファイザンカーン2016

@MohammadFaizanKhan-リンクを歓迎し、感謝します:)
ジョセフ

7

エンコーディングを設定できる別の場所を要約するには:

シェープファイルを開くと: shpを開く

CSVを開くと: CSVを追加

ベクターファイルを保存する場合: ベクターファイルを名前を付けて保存

レイヤープロパティ:
レイヤーのプロパティ

また、@ Josephによって言及されているように、[シェープファイルエンコーディング宣言を無視する]設定をオフにする必要があります。


あなたの最後の行が私をたくさん助けてくれてありがとう。hub.qgis.org/issues/13203
Muhammad Faizan Khan

3

を使用するSave As ...場合は、別のファイル名を選択する必要がありAdd file to canvasます。

その結果、あなたはしなければならないことで新しいシェープファイルを取得するには、あまりにもプロジェクトを保存します。保存されていないプロジェクトには、そのままのシェープファイルと誤ったエンコーディングが含まれています。

ところで、Data encodingレイヤープロパティのは、シェープファイルではなく、プロジェクトファイルの一部です。コード例では、シェープファイル内に何も書き込まず、プロジェクトのレイヤー設定のみを変更します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.