2011-03-08 62 views
6

Tengo un DB - con los artículos de la tabla.Convierte latin1 a UTF8

Quiero cambiar el título, y el campo de contenido a UTF8 ahora - todos los datos se ve así: פורטל רעל נפתח רשמית! quiero que se convierta en caracteres hebreos normales.

Gracias

+0

hacer con 'phpmyadmin', vaya a esa tabla, modifique el atributo ... simple – diEcho

+0

Ya lo intenté, los datos en pma son idénticos. – WEBProject

+1

Es difícil decir qué hacer sin más información, pero hay que tener en cuenta que cambiar la codificación de caracteres de una tabla en MySQL * no * convierte los datos a la nueva codificación. Los bytes reales almacenados en la base de datos siguen siendo los mismos. –

Respuesta

5

Puede hacer mysqldump desde esta base de datos. A continuación, descargue algo como Notepad ++, abra el archivo de volcado, conviértalo a UTF8, luego reemplace todas las codificaciones por el archivo utf-8, incluido el primer operador SET NAMES.

Si realiza el volcado a archivo a través de phpMyAdmin (con la configuración predeterminada) use la codificación del archivo de salida ISO-8859-1 en lugar de UTF-8 como puede ver de forma predeterminada.

1

tratar

ALTER TABLE `tablename` CHANGE `field_name` `field_name` VARCHAR(200) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL 
8

si es necesario convertir toda la base de datos, puede realizar copias como databaseback.sql archivo y luego formar la línea de comandos iconv -f latain -t utf-8 <databaseback.sql> databaseback.utf8.sql

puede utilizar el http://www.php.net/manual/en/function.iconv.php
para convertir cada fila en php en caso de que no tenga acceso a la línea de comandos

y, por último, no se olvide de convertir el cotejo de cada campo en phpmyadmin, a continuación, puede resotre la utf8 detrás fácilmente

actualización

si tienes iconv is not recognized, significa que no lo hace iconv han instalado

mucho más solución más fácil es: Migración de datos MySQL a Unicode

http://daveyshafik.com/archives/166-migrating-mysql-data-to-unicode.html

+0

Lo he probado en CMD - tengo: 'iconv 'no se reconoce como un programa en funcionamiento o un archivo por lotes. – WEBProject

4

Puede escribir un pequeño script php que realice la conversión. Ver http://www.php.net/manual/en/function.mb-detect-encoding.php y http://php.net/manual/en/function.mb-convert-encoding.php Así es como lo hice.

¡Y recuerde usar el modo estricto! http://www.php.net/manual/en/function.mb-detect-encoding.php#102510

En pseudocódigo, sería sth. como esta:

str = getDataAsString() 
if(!isUTF8(str)) { 
    str = convert2UTF8(str) 
} 
saveStr2DB() 
+0

lo probé, obtengo utf-8 cuando estoy usando detec, así que ... extraño. – WEBProject

+0

¿qué es el modo estricto? – WEBProject

+0

ver http://www.php.net/manual/en/function.mb-detect-encoding.php#102510 - Tienes que establecer el último parámetro en "verdadero", entonces descubrirá la codificación correcta :) – Tobias

6

La siguiente función de MySQL devolverá la cadena UTF8 correcta después de doble codificación:

CONVERT (CAST (CONVERT (campo utilizando latin1) AS binario) utf8 USO) Se puede utilizar con una instrucción UPDATE para corregir los campos:

UPDATE tablename SET campo = CONVERTIR (CAST (CONVERTIR (campo USANDO latin1) COMO BINARIO) UTILIZAR utf8);

+1

esto trunca la palabra en el carácter especial :( –