Eso pasa porque la base de datos está usando latin iso y tu sitio web está procesando utf-8, por lo cual cuando exportas en utf8 se ve mal porque los datos reales están en utf8 pero las tablas las convierte a latin iso, pero cuando exportas a latin iso el phpmyadmin convierte automaticamente los carácteres.
Verifica tu proyecto completo, recuerda que la codificación de carácteres de tu sitio web debe estar definido en:
Las cabeceras enviadas vía php:
<?php header('content-type: text/html; charset=utf-8');
Las cabeceras en el html:
<meta charset="utf-8" />
La conexión mysql:
$mysqli = new mysqli(...);
$mysqli->set_charset('utf8'); // Ojo, sin guión
La entrada de inputs de php:
mb_internal_encoding('utf-8');
mb_http_output('utf-8');
mb_http_input('utf-8');
//mb_language('uni');
mb_regex_encoding('utf-8');
Los formularios en html:
<form accept-charset="utf-8" action="...
Los carácteres en htmlentites:
Bien: <b>Letra con acento, á</b>
Mal: <b>Letra con acento, á</b>
Escribir acentos en código html no es estandard, de hecho si lo validaras como xml te lo rechazaría diciendote que el xml está corrupto, todo carácter especial en xml y html deben escribirse con entidad html. El signo de interrogación abierto es ¿, el copyright es © las comillas son "e;, las eñes son ñ etc etc.
Mira acá donde dice "Html Entity".
http://www.utexas.edu/learn/html/spchar.htmlAl momento de crear la base de datos:
CREATE DATABASE `basededatos` CHARACTER SET utf8 COLLATE utf8_general_ci;
Al momento de crear las tablas:
CREATE TABLE tabla( columna text CHARACTER SET utf8 COLLATE utf8_unicode_ci) CHARACTER SET utf8 COLLATE utf8_unicode_ci;
Al momento de abrir tu editor de código asegúrate que sea un editor que esté trabajando bajo tu codificación, por ejemplo eclipse muchas veces te escribe en utf8 a pesar de que el archivo esté en latin iso, debes configurar el proyecto y especificar la codificación, sublimetext y notepad++ mantienen bien la codificación.
Luego de tener todo en regla no volverás a tener mas problemas con los acentos y eñes, de hecho yo trabajo siempre en utf8, no necesito latin iso para manejar los acentos, de hecho visual studio 2012 en adelante crea proyectos por defecto en utf8 y jamas tiene problemas con los acentos.
Yo en lo personal siguiendo todo esto jamás he tenido problemas de codificación, antes si cuando no sabía y tenia la base de datos en una codificación y los archivos en otra, entonces los acentos se volvían como signos de interrogación y ahí tenía que conseguirme scripts para convertir bases de datos, etc, eso no debería pasar nunca si sigues bien el consejo de las codificaciones.
Ojo, json no soporta múltiples codificaciones, el estandard solo soporta utf8, los caracteres no convencionales se convierten en unicode, si todo tu proyecto usa utf8 entonces no tendrás problemas pero si usas latin iso entonces tendrás problemas al momento de usar datos en json.
A veces puedes decir.. en mi pc funciona bien, los acentos andan bien, pero derrepente viene otra persona y comienza a tener problemas con los acentos, eso es porque no todos los navegadores funcionan con la misma codificación por defecto, si bajas la versión de firefox en español te va a trabajar con latin iso y si bajas la version en ingles te va a usar utf8, pero ojo, no es que siempre lo use, por eso la cabecera de php dice "accept-", es porque acepta esa codificación por defecto y de esa manera haces trabajar a todos los navegadores bajo la misma codificación de caracteres y eso hará que nadie inserte caracteres fuera de tu codificación.
Por último recuerda... antes de hacer cualquier cosa haz respaldos porque puedes corromper tus datos ya existentes si no sabes migrar bien la codificación de una tabla/base de datos existente y te recomiendo usar mysqldump y no phpmyadmin para exportar porque phpmyamdin tiene muchas falencias, depende mucho de php y apache asi que si no tienes bien configurado tu servidor puedes tener problemas como por ejemplo que no te descargue la base de datos completa porque es muy grande y termines con la mitad de la base de datos con un error de php al final o puede que trabaje sin la codificación necesaria. Si instalaste mysql en tu pc deberias tener entonces instalada las herramientas básicas como el comando mysql y mysqldump para hacer respaldos locales y remotos el cual está diseñado para exportar bases de datos sin corromperlas tal cual están en producción.
Dale un vistazo a esto:
http://www.thegeekstuff.com/2008/09/backup-and-restore-mysql-database-using-mysqldump/http://www.toptal.com/php/a-utf-8-primer-for-php-and-mysqlhttp://es.wikipedia.org/wiki/UTF-8#Ventajas_y_desventajashttp://www.utexas.edu/learn/html/spchar.html