8

私たちの組織では、さまざまなファイル形式の GIS コンテンツを扱っています。これらのファイルを PostGIS データベースに入れる必要がありますが、これは ogr2ogr を使用して行います。問題は、データベースが UTF8 でエンコードされており、ファイルのエンコードが異なる可能性があることです。

options パラメーターを org2ogr に追加してエンコーディングを指定する方法の説明を見つけましたが、どうやら効果がありません。

ogr2ogr -f PostgreSQL PG:"host=localhost user=username dbname=dbname \
password=password options='-c client_encoding=latin1'" sourcefile;

私が受け取るエラーは次のとおりです。

エラー 1: ALTER TABLE "soer_vd" ADD COLUMN "målsætning" CHAR(10)
エラー: "UTF8" をエンコードするための無効なバイト シーケンス: 0xe56c73
ヒント: このエラーは、バイト シーケンスが一致しない場合にも発生する可能性があります。
「client_encoding」によって制御される、サーバーが期待するエンコーディング。

エラー 1: ALTER TABLE "soer_vd" ADD COLUMN "påvirkning" CHAR(10)
エラー: "UTF8" をエンコードするための無効なバイト シーケンス: 0xe57669
ヒント: このエラーは、バイト シーケンスが一致しない場合にも発生する可能性があります。
「client_encoding」によって制御される、サーバーが期待するエンコーディング。

エラー 1: 新機能の INSERT コマンドが失敗しました。
エラー: "UTF8" をエンコードするための無効なバイト シーケンス: 0xf8
ヒント: このエラーは、バイト シーケンスが一致しない場合にも発生する可能性があります。
「client_encoding」によって制御される、サーバーが期待するエンコーディング。

現在、私のソース ファイルは Shape ファイルであり、Latin1 でエンコードされていることは確かです。

ここで何が間違っていますか?助けてもらえますか?

敬具、キャスパー

4

7 に答える 7

12
于 2009-09-08T09:04:25.770 に答える
11

クライアントのエンコーディングを LATIN1 に設定するように聞こえます。正確にどのようなエラーが発生しますか?

ogr2ogr が適切に渡さない場合に備えて、環境変数PGCLIENTENCODINGを に設定することもできますlatin1

それらが実際に LATIN1 であることを再確認することをお勧めします。ファイル内で実際に一貫していると仮定すると、単純に実行fileするだけで良いアイデアが得られます。送信してiconv、LATIN1 または UTF8 に変換することもできます。

于 2009-09-05T23:17:02.890 に答える
8

コマンドラインを次のように記述する必要があります。

PGCLIENTENCODING=LATIN1 ogr2ogr -f PostgreSQL PG:"dbname=...
于 2012-03-15T10:37:56.617 に答える
7

現在、GDALのOGRは、ベクター形式間の変換中に文字データの再コーディングを実行しません。チームはRFC 23.1: OGR ドライバーの再コーディングのサポートについて説明する OGR ドキュメントでの Unicode サポートを準備しました。RFC 23 が採用され、コア機能は GDAL 1.6.0 ですでにリリースされています。ただし、OGR ドライバーのほとんどは、Shapefile ドライバーを含めて更新されていません。

当分の間、私は OGR をエンコーディングにとらわれず、無知であると説明します。つまり、OGR は取得したものを処理せずに送信します。OGR は char 型を使用してテキスト データを操作します。これは、マルチバイトでエンコードされた文字列 (UTF-8 など) を処理するのに適しています。これは、char 要素の配列として格納された単純なバイト ストリームです。

OGR ドライバーの開発者は、UTF-8 でエンコードされた属性値の文字列を返す必要があることをお勧めしますが、この規則は OGR ドライバー全体で広く採用されていないため、この機能はまだエンドユーザーの準備が整っていません。

于 2010-01-22T16:12:45.457 に答える
3

Windows では、コマンドは

PGCLIENTENCODING=LATIN1 を設定

Linux の場合

export PGCLIENTENCODING=LATIN1

また

PGCLIENTENCODING=LATIN1

さらに、この議論は私を助けます:

https://gis.stackexchange.com/questions/218443/ogr2ogr-encoding-on-windows-using-os4geo-shell-with-census-data

Windows 上

SET PGCLIENTENCODING=LATIN1 ogr2ogr...

エラーは表示されませんが、ogr2ogr は機能しません... システム変数を変更する必要があります (例: システム --> 詳細システム設定 --> 環境変数 --> 新しいシステム変数) システムを再起動してから実行します

ogr2ogr...

于 2019-01-09T15:43:57.100 に答える
1

このコマンドを使用してこの問題を解決しました:

pg_restore --host localhost --port 5432 --username postgres --dbname {DBNAME} --schema public --verbose "{FILE_PATH to import}"

これが正しい解決策かどうかはわかりませんが、私にとってはうまくいきました。

于 2012-04-10T07:18:22.987 に答える