2017-12-31 256 views
0

今すぐpgAdmin4 GUIで新しいDBを作成するときにEncoding : UTF8を選択できます。PostgreSQLでutf8照合をインストールする

ただし照合または文字の種類としてutf8_general_ciを選択するオプションはありません。私がしたらselect * from pg_collation;utf8_general_ciに関連する照合はありません。

mySQLの背景から来ていますが、私は混乱しています。 PostgreSQL 10またはWindows10にutf8のような照合順序(たとえばutf8_general_ci,utf8_unicode_ci)の照合をインストールする必要がありますか?

私はちょうどPostgreSQLにmySQL collation utf8_general_ciと同等のものを持ちたいと思っています。

答えて

1

utf8ありがとうエンコード(バイトのシリーズとしてUnicode文字を表現する方法)ではなく、(文字はその前に行く)の照合です。

私はutf8_general_ci(以上現代utf8_unicode_ci)のためのPostgres 10照合同等のund-x-icu呼ばれると思う - これはICUライブラリが提供する未定義の照合(任意の現実世界の言語用に定義されていない)です。この並べ替えは、ほとんどの言語からかなり合理的な文字を並べ替えます。

ICUサポートはPostgreSQL 10で追加された新機能です。古いPostgreSQLバージョンやコンパイル時に無効になっている場合、この照合は利用できません。その前に、Postgresは、オペレーティングシステムによって提供される照合サポートを使用していました。これはオペレーティングシステムによって異なります。

+0

新年あけましておめでとうございます。はい、私はエンコード照合の違いを知っています。しかし、mySQLという言葉で考えると、私はutf8のような照合を意味しました(例えば、 'utf8_general_ci'または' utf8_unicode_ci')。私はOPをよりよく書かれるように編集しました。とにかく、 'und-x-icu'が未定義の照合であれば、C照合も使用できます。これは未定義の照合でもあります。ありがとうございます。 – slevin

+1

私はいくつかのテストを行いましたが、現在のバージョン(10.1)ではICUのサポートが完全ではないと思われます。 'und-x-icu'ロケールでデータベースを作成することは不可能です。明示的にいくつかのカラムに対してのみ設定します。だから、それが改善されるまで、 'create database datename template = 'template0' encoding = 'UTF8' lc_ctype = 'C' lc_collat​​e = 'C';や他のOS提供ロケールを使用しなければならないようです。 – Tometzky

+0

こんにちは。私はPostgreSQL 10.1をVisual C++でビルドしています.1800はwin10ラップトップに64ビットビルドしています。私はちょうど ' OWNER = postgresの TEMPLATE = template0の ENCODING = 'UTF8' LC_COLLATE = 'ウント-X-ICU' LC_CTYPE = 'ウント-X-ICU' TABLESPACE = pg_default 接続制限を使用してデータベースのテスト を作成しました= -1; 'それは働いた。 pgAdmin4 GUIのプロパティも見ることができます。 – slevin

関連する問題