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 template0
base 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