teo
1/11/2018 - 9:10 AM

Acentos y Ñs en Mysql y PHP

Solución al problema de los acentos y las ñ entre mysql y php

<?php
/*
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 en utf_unicode_ci (más tarde en Operations > Collation de phpMyAdmin se puede cambiar)
Content type HTML
Pon en el <head> de todos los archivos HTML:
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
Content type PHP
Y en los puramente PHP (que muestran XML, llamadas de AJAX, APIs…) pon el código:*/

header("Content-Type: text/html;charset=utf-8");

/*Set names
Al crear la conexión de PHP con MySQL, envía esta consulta justo tras la conexión:*/

$acentos = $db->query("SET NAMES 'utf8'"); 

/*Convertir codificado a UTF-8
Convierte todo lo que esté codificado de latin1 a UTF-8 */

SELECT convert(cast(convert(content using latin1) as binary) using utf8) AS content

/* Apache
Quita el DefaultCharset del Apache o modifícalo
htmlentities
Como última y desesperada opción, quita todos los htmlentities(); y sustitúyelo
por otro parser para ‘sanitizar’ los datos.*/