Ver y modificar conjuntos de caracteres PostgreSQL

Un conjunto de caracteres vista

juego de caracteres automática regla de conversión entre conjuntos de caracteres pg 10, y los segmentos de servicio y referencia de cliente soportado  http://www.postgres.cn/docs/10/multibyte.html

1. Ejemplos de servidor de juegos de caracteres

postgres=# show server_encoding;
 server_encoding 
-----------------
 UTF8

2. El conjunto de caracteres de base de datos

postgres=# \l
-- 或者
postgres=# select datname,pg_encoding_to_char(encoding) as encoding from pg_database;

3. El conjunto de caracteres del cliente

postgres=# show client_encoding;
 client_encoding 
-----------------
 UTF8

-- 或者

postgres=# \encoding
UTF8

 

En segundo lugar, establecer el conjunto de caracteres

1. Ejemplos de servidor de juegos de caracteres

Sólo cuando se puede proporcionar la initialize una instancia

initdb -D /data_dir -E UTF8 --locale=en_US.utf8
  • -E codificación --encoding = codificación o
    codificación de elegir una base de datos de plantilla, que será la codificación predeterminada en la base de datos creada en el futuro, a menos que aparezca a la cubierta cuando se crea una base de datos. Este valor se obtiene a partir de la configuración regional predeterminada (--locale) en, si no locale, SQL_ASCII predeterminado.
  • --locale = locale
    ajuste instancia del servidor de zona, el sistema operativo predeterminado desde el entorno de funcionamiento initdb

Después se modificará error de inicialización

postgres=# alter system set server_encoding = 'UTF8';
ERROR:  parameter "server_encoding" cannot be changed

Si en la instancia inicialización establecer el juego de caracteres incorrecto y no puede volver a inicializado, una solución es dejar caer template1 base de datos, especifique la reconstrucción de codificación

UPDATE pg_database SET datistemplate=FALSE WHERE datname='template1';
DROP DATABASE template1;
CREATE DATABASE template1 WITH owner=postgres template=template0 encoding='UTF8';
UPDATE pg_database SET datistemplate=TRUE WHERE datname='template1';

 

2. El conjunto de caracteres de base de datos

  • Especificada cuando se creó utilizando el comando createdb
createdb -E EUC_KR -T template0 --lc-collate=ko_KR.euckr --lc-ctype=ko_KR.euckr korean
  • Especificada al crear db utilizando SQL

Tenga en cuenta el siguiente comando para copiar especificado template0base de datos. Cuando una copia de cualquier otra base de datos no se puede cambiar desde la base de datos de origen se presentan codificación y la configuración regional, ya que esto puede causar daños a los datos.

CREATE DATABASE korean WITH ENCODING 'EUC_KR' LC_COLLATE='ko_KR.euckr' LC_CTYPE='ko_KR.euckr' TEMPLATE=template0;

 

3. El conjunto de caracteres del cliente

  • Capa del sistema operativo ajustes
export PGCLIENTENCODING=GBK
  • O conjunto de db
set client_encoding to 'utf8';
-- 或者
\encoding GBK

 

referencia

https://blog.csdn.net/daijiguo/article/details/82767789

http://www.postgres.cn/docs/10/multibyte.html

https://blog.51cto.com/wujianwei/1979023

Publicados 295 artículos originales · ganado elogios 35 · Vistas a 80000 +

Supongo que te gusta

Origin blog.csdn.net/Hehuyi_In/article/details/105207784
Recomendado
Clasificación