7

Saludos!

Estoy trabajando en una base de datos la cual tiene planeado responder a muchas consultas, el caso es que quiero saber cuales serian la ventajas de usar utf8_spanish2_ci, utf16_spanish2_ci y utf32_spanish2_ci?

Quieron que me expliquen sus ventajas y sus desvantajas asi como cual seria mas optimo.

Cabe resaltar que no se preocupen por como estan estructurados los query porque los mantego en constante cambios para que sean lo mas optimos posible.

Gracias!

2 Answers2

26

Primero unas definiciones:

Conjunto caracteres: Listado de caracteres con su código identificativo.

Colaciones: Conjunto de reglas para comparar caracteres en un juego de caracteres dado.

utf8_spanish_ci : Español Moderno

utf8_spanish2_ci : Español Tradicional.

En ambas colaciones: 'ñ' es una letra independiente, entre 'n' y 'o'.

Español tradicional: 'ch' es una letra, ordenada entre 'c' y d, y 'll' es una letra que se coloca entre 'l' y 'm'

Quiere decir que si usas el utf8_spanish2_ci habran dos letras de mas y que ambas te permitiran tener la letra eñe(Ñ) dentro de tus datos y que se muestren.

NO tienen nada que ver con la cantidad de datos que se insertaran, solo definen que letras se mostraran y que no, es decir, si usas spanish_ci, la EÑE (Ñ) se mostrara en los datos algo asi "ÑAME", de lo contrario otro tipo de colacion te mostraría: áóñ en vez de la EÑE(Ñ) y otros elementos como las tildes y palabras asentuadas y tambien te apareceria el � Caracter inspector donde este la EÑE(Ñ)

Pasate por aqui para ver los problemas que generaria:

¿Por que el Carácter inspector (�) aparece en algunos datos obtenidos de la Base de Datos?

Te recomiendo utf_spanish_ci y luego codificar tus documentos HTML en utf-8, tal y como hice en mi problema

Cotejamiento MYSQL Al crear la base de datos MySQL, asegúrate que los campos string y demás esten en utf8_spanish_ci y el cotejamiento de las tablas también.

Algunas paginas recomiendo solo utf8_spanish_ci para string y el resto en utf8_unicode_ci, pero no se que tan bueno sea, porque no lo he probado.

Contenido HTML Pon en el <head> de todos los archivos HTML:

<meta http-equiv="Content-type" content="text/html; charset=utf-8" />

Contenido PHP

header("Content-Type: text/html;charset=utf-8"); 
mysql_query("SET NAMES 'utf8'");
Dev 200
  • 5,246
  • 5
  • 39
  • 80
  • buena respuesta, tambien ten en consideracion que el idioma lo maneja 3 niveles y puedes tener problema; los menciono a continuacion:1 el motor de base de datos 2. la base de datos 3. las tablas de base de datos, esto pueden generarte problemas y dolores de cabezas – JackNavaRow Apr 10 '17 at 21:27
  • @JackNavaRow yo lo que hice en mi sistema fue: base de datos en utf8spanish en todo, cotejamiento igual, luego los archivos los abri con bloc de notas y los guarda en codificacion UTF8 , luego html utf8 y luego php enconde utf8 hejejej – Dev 200 Apr 10 '17 at 23:13
  • 1
    si te funciono perfecto , ten cuidado al hacer esto tambien, una cosa es la codificacion del archivo otra la codificacion de la lectura del archivo; cuando hice una migracion esto me dio dolor de cabeza – JackNavaRow Apr 11 '17 at 15:23
  • @JackNavaRow heheheh si es un trauma total – Dev 200 Apr 11 '17 at 17:21
  • @VictorAlvarado yo tengo una BD en donde en una columna llamada `title` de la página. En uno de los títulos (fila 1) tengo una palabra con una tilde, intenté seguir tu consejo y poner el cotejamiento en `utf8_spanish_ci` pero me sale este error ` Errores de consulta: #1366 - Incorrect string value: '\xFAsqued...' for column 'title' at row 1` – Arturo Viñas Salazar May 16 '21 at 20:58
-3
header("Content-Type: text/html;charset=utf-8"); 

$mysqli->query("SET NAMES UTF8");
Juan Salvador Portugal
  • 6,565
  • 8
  • 19
  • 41