php - tildes - quitar acentos mysql
Guardar acentos en la base de datos MySQL (8)
¿Ha revisado http://dev.mysql.com/doc/refman/5.0/en/charset-unicode.html :
Las aplicaciones cliente que necesitan comunicarse con el servidor que utiliza Unicode deben establecer el juego de caracteres del cliente en consecuencia; por ejemplo, emitiendo una declaración SET NAMES ''utf8''. ucs2 no se puede utilizar como conjunto de caracteres del cliente, lo que significa que no funciona para SET NAMES o SET CHARACTER SET. (Consulte la Sección 9.1.4, "Conjuntos de caracteres de conexión y intercalaciones").
Además de eso:
si obtienes datos a través de php desde tu mysql-db (todo utf-8) pero aún obtienes ''?'' para algunos caracteres especiales en su navegador (), intente esto:
después de mysql_connect (), y mysql_select_db () agregue estas líneas: mysql_query ("SET NAMES utf8");
trabajó para mi. Intenté primero con utf8_encode, pero esto solo funcionó para äüöéè ... y así sucesivamente, pero no para kyrillic y otros caracteres.
Intento guardar acentos franceses en mi base de datos, pero no se guardan como deberían en la base de datos.
Por ejemplo, una "é" se guarda como "Ã ©".
Intenté configurar mis archivos en "Unicode (utf-8)", los campos en la base de datos son "utf8_general_ci" y el propio DB.
Cuando miro mis datos publicados a través de AJAX con Firebug, veo el acento pasado como "é", por lo que es correcto.
¡Gracias y hazme saber que necesitas más información!
La mejor opción es que la conexión de su base de datos no esté codificada en UTF-8; por lo general, es ISO-8859-1 por defecto.
Prueba enviar una consulta
SET NAMES utf8;
después de hacer la conexión.
Necesita a) a) asegurarse de que sus tablas estén usando una codificación de caracteres que pueda codificar dichos caracteres (UTF-8 tiende a ser la codificación de referencia en estos días) yb) asegúrese de que sus envíos de formularios se envíen a la base de datos en la misma codificación de caracteres. Para ello, guarde sus archivos HTML / PHP / cualquiera como UTF-8 e incluya una metaetiqueta en el encabezado que le indique al navegador que use la codificación UTF-8.
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
Ah, y no te olvides de C, cuando te conectes a la base de datos, asegúrate de estar usando el conjunto de caracteres correcto ejecutando SET NAMES charset = utf8 (puede que no sea la sintaxis correcta, tendré que buscar qué debería ser, pero será a lo largo de esas líneas)
si usa PDO, debe instanciar así:
new /PDO("mysql:host=$host;dbname=$schema", $username, $password, array(/PDO::MYSQL_ATTR_INIT_COMMAND => ''SET NAMES utf8'') );
Use UTF8:
Establezca un meta en su
<meta http-equiv="Content-type" content="text/html;charset=utf-8" />
Cuando se conecta a su base de datos mySQL, fuerce la codificación para que NO tenga que jugar con su configuración de mysql
$conn = mysql_connect(''server'', ''user'', ''password'') or die(''Could not connect to mysql server.'');
mysql_select_db(''mydb'') or die(''Could not select database.'');
mysql_set_charset(''utf8'',$conn); //THIS IS THE IMPORTANT PART
Si usa AJAX, configure la codificación de esta manera:
header(''Content-type: text/html; charset=utf-8'');
Personalmente, resolví el mismo problema añadiendo después del código de conexión MySQL :
mysql_set_charset("utf8");
o: mysqli_set_charset("utf8");
o el equivalente de POO : $mysqli_link->set_charset("utf8");
Y a veces deberá definir el conjunto de caracteres php principal agregando este código: mb_internal_encoding(''UTF-8'');
En el lado HTML del cliente, debe agregar los siguientes datos de encabezado:
<meta http-equiv="Content-type" content="text/html;charset=utf-8" />
Para usar los resultados de JSON AJAX (por ejemplo, usando jQuery), debe definir el encabezado agregando:
header("Content-type: application/json;charset=utf8");
json_encode(
some_data
);
Esto debería hacer el truco
mysqli_set_charset ($ conn, "utf8");
PHP (.net) aconseja no configurar conjuntos de caracteres después de conectarse con una consulta como SET NAMES utf8 porque su funcionalidad para el escape de datos dentro de las instrucciones MySQL podría no funcionar como se esperaba.
No use SET NAMES utf8, pero utilice la función (o método) ..._ set_charset () en su lugar, en caso de que esté usando PHP.