2010-11-26 15 views
8

Soy nuevo en datos multilingües y mi confesión es que nunca lo había intentado antes. Actualmente estoy trabajando en un sitio multilingüe, pero no sé qué idioma se utilizará.Intercalación de MySQL para almacenar datos multilingües de idioma desconocido

¿Qué colección/juego de caracteres de MySQL debo usar para lograr esto?

¿Debo usar algún tipo de juego de caracteres Unicode?

Y, por supuesto, estos idiomas no están fuera de este universo, estos deben estar en el conjunto que más utilizamos.

Respuesta

15

Debe utilizar una intercalación Unicode. Puede configurarlo de manera predeterminada en su sistema o en cada campo de sus tablas. Existen los siguientes nombres de intercalación Unicode, y estas son sus diferencias:

utf8_general_ci es una intercalación muy simple. Simplemente - elimina todos los acentos - luego se convierte en mayúscula y utiliza el código de este tipo de letra de resultado de "letra base" para comparar.

utf8_unicode_ci utiliza la tabla predeterminada de elemento de intercalación Unicode.

Las principales diferencias son:

  1. utf8_unicode_ci soporta llamadas expansiones y ligaduras, por ejemplo: ß carta alemanes (U + 00DF dura carta S) se ordenan cerca "ss" Carta OE (U + 0152 AMÉRICA CAPITAL LIGATURE OE) está ordenada cerca de "OE".

utf8_general_ci no es compatible con expansiones/ligaduras, ordena todas estas letras como caracteres individuales y, a veces en el orden incorrecto.

  1. utf8_unicode_ci es generalmente más preciso para todos los scripts. Por ejemplo, en el bloque cirílico: utf8_unicode_ci está bien para todos estos idiomas: ruso, búlgaro, bielorruso, macedonio, serbio y ucraniano. Mientras que utf8_general_ci está bien solo para el subconjunto de cirílico ruso y búlgaro. Las letras adicionales utilizadas en bielorruso, macedonio, serbio y ucraniano no están bien ordenadas.

+/- La desventaja de utf8_unicode_ci es que es un poco más lenta que utf8_general_ci.

Dependiendo de si usted sabe o no, qué idiomas/caracteres específicos va a utilizar, le recomiendo que use utf8_unicode_ci que tiene una cobertura más amplia.

extraído de MySQL forums.

+0

tienes razón, al menos agregué la fuente –

1

UTF-8 abarca la mayoría de los idiomas, esa es su apuesta más segura. Sin embargo, hay excepciones, y debe asegurarse de que todos los idiomas que desea cubrir funcionen en UTF-8. Mi experiencia con el almacenamiento de juegos de caracteres que MySQL no comprende, es que no podrá clasificarse correctamente, pero los datos permanecen intactos siempre que los lea en la misma codificación de caracteres en que los escribí.

UTF-8 es la codificación de caracteres, una forma de almacenar un número. Qué personaje está representado por qué número es Unicode, una distinción importante. Unicode tiene una gran cantidad de idiomas y UTF-8 puede codificarlos todos (0 a 10FFFF, más o menos), pero Java no puede manejarlos todo porque la representación interna de la máquina virtual es un carácter de 16 bits (no es que le interese Java:)

+0

¿Qué debo hacer para hacer una clasificación correcta en cualquier idioma de destino? Estoy tratando de construir una gran aplicación internacional y realmente * necesito * clasificación adecuada. No necesito usar PHP o MySQL, pero eso es lo que estoy usando actualmente. – Stephane

0

puede insertar cualquier texto en el idioma en la tabla de MySQL al cambiar la intercalación de la mesa de campo en 'utf8_general_ci' .Es es sensible a mayúsculas.

Cuestiones relacionadas