2011-07-05 25 views
20

Desde este enlace http://wiki.postgresql.org/wiki/Todo:Collate y http://www.postgresql.org/docs/9.1/static/collation.html. me hace confundirSoporte LC_COLLATE y LC_CTYPE para utf-8 en postgreSQL

Dijeron que el soporte utf-8 depende de la capacidad del sistema operativo, y es deferente entre cada opción LC_COLLATE y LC_CTYPE.

Cuando creo una base de datos usando pdAdmin III, hay 3 opciones, C, Posix and English_United States.1252. ¿Cuál es la diferencia entre C, Posix and English_United States.1252?

Quiero trabajar con todos los idiomas compatibles, es decir unicode utf-8, que no parece ser una opción.

¿Qué debo elegir para los valores de LC_COLLATE y LC_CTYPE para crear una base de datos que admita utf-8 en PostgreSQL 9?

Respuesta

12

Como documentación, 22.2. Character Set Support dice:

Una restricción importante, sin embargo, es que establece el carácter de cada base de datos debe ser compatible con LC_CTYPE (clasificación de caracteres) de la base de datos y LC_COLLATE (orden de clasificación cadena) configuración regional. Para la configuración regional C o POSIX , se permite cualquier conjunto de caracteres, , pero para otras configuraciones regionales solo hay un juego de caracteres que funcionará correctamente. (En Windows, sin embargo, UTF-8 codificación se puede utilizar con cualquier localidad.)

veo que probablemente usted tiene PostgreSQL bajo el host de Windows (English_United States.1252 locale), por lo que puede usar cualquier de estos (Posix es el mismo que C y significa "no locale"), leer 22.1. Locale Support:

apoyo locale se refiere a una aplicación respetando culturales preferencias con respecto a alfabetos, clasificación, el formato número, etc.

Si desea que el sistema se comporte como si no tuviera soporte de configuración regional, use la configuración regional especial C o POSIX .

EDIT:

plataforma Windows no es compatible con POSIX, por lo que debe utilizar C configuración regional para esa plataforma. No sé por qué instalador tiene la opción de POSIX (que supongo que es más bien un error):

enter image description here

para crear nuevos clúster sin local puede simplemente usar --no-locale interruptor por ejemplo:

initdb --no-locale -E UTF-8 C:\pgdata
+0

OWH gracias tanto. Ahora entiendo. – Ahmad

+0

Pero tengo un problema. intenté reinstalar el postgresql, luego en la instalación inicial, elegí POSIX.después de terminar, trato de crear una nueva base de datos, pero obtuve el error "nombre de sitio no válido POSIX" – Ahmad

+0

@Ahmad: Trate de usar 'C 'en su lugar. –