0

Buenas a todos! Estoy utilizando como hosting Hostinger, y no lo pongo para darle publicidad sino porque el servicio técnico no es capaz de decirme por qué a pesar de tener el código que os pondré a continuación los acentos y caracteres especiales si SE GUARDAN en la base de datos PERO NO SE RECUPERAN COMO TALES sino símbolos raros

Lo primero en phpmyadmin selecciono la base de datos y en operaciones pongo cotejamiento utf8_general_ci. Igual en cada una de las tablas y campos de tipo char.

Luego ya en el webService de php:

header('Content-Type: text/html; charset=UTF-8'); 

$link = new mysqli("mysql.hostinger.es","xxxxxxxx","xxxxx","xxxxxx");
if ($link->connect_errno) {
             echo "Fallo al conectar a MySQL: (" . $link->connect_errno . ") " . $link->connect_error;
        }

mysqli_set_charset($link,"utf8");

mysqli_select_db($link,$u356604334_swa);
$link->query("SET NAMES utf8");

Eso a la hora de conectar. Después en cada consulta utilizo utf8_decode con la cadena que saco.

echo utf8_decode( implode(":",$arraySalida)); 

El caso es que al principio al meter datos en la base de datos, me cortaba la cadena al llegar a una acento, una ñ, ... cuando hice todo lo que os he descrito anteriormente pasó de eso a meter los caracteres en la base de datos, yo desde phpmyadmin puedo ver en campos como apellido cadenas tipo Muñoz, Hernández,... Pero cuando hago un select para sacar esos campos me devuelve símbolos raros ...

Alguna idea? Recomendáis algún otro hosting?

Muchas gracias

midlab
  • 309
  • 2
  • 5
  • 14
  • La he marcado como duplicada, esta pregunta ya tiene respuesta en [� Caracter inspector aparece en algunos datos obtenidos de la BBDD](https://es.stackoverflow.com/a/59510/29967) – A. Cedano Apr 20 '17 at 22:57

2 Answers2

3

Buenas de nuevo, he encontrado una solución toquetenado código, os la dejo por si tenéis algún problema del estilo para que os sirva:

La primera parte de la configuración exacamtente igual:

Lo primero en phpmyadmin selecciono la base de datos y en operaciones pongo cotejamiento utf8_general_ci. Igual en cada una de las tablas y campos de tipo char.

Luego ya en el webService de php:

header('Content-Type: text/html; charset=UTF-8'); 

$link = new mysqli("mysql.hostinger.es","xxxxxxxx","xxxxx","xxxxxx");
if ($link->connect_errno) {
             echo "Fallo al conectar a MySQL: (" . $link->connect_errno . ") " . $link->connect_error;
        }

mysqli_set_charset($link,"utf8");

mysqli_select_db($link,$u356604334_swa);
$link->query("SET NAMES utf8");

Luego a la hora de hacer el select he quitado el :

decode_utf8

echo implode(":",$arraySalida);

No sé por qué funciona pero funciona y mejor ni tocarlo ni pensarlo ... Mi razonamiento es que ya esta en utf8 en la base de datos (se ven los acentos y demás) entonces simplemente lo saco sin tocar nada más)

Perdon por tanto rollo, no sabia si borrar el post o contestarlo, si los administradores lo consideran inoportuno ningun problema en borrarlo.

midlab
  • 309
  • 2
  • 5
  • 14
0

Buenas, yo uso www.000webhost.com que me lo recomendaron justamente en stackoverflow. En la propia web ponen que trabajan con Hostinger así que supongo que no habría ningún problema si tienes que migrar todo tu proyecto ahí. Es muy fácil de usar y te dejan las cosas bastante claras. Personalmente, y tampoco es por hacer publicidad, para hacer mis pequeños proyectos me va de maravilla y ya te dicen los precios por si quieres algo más profesional.

Con el tema de la base de datos y las tildes prueba de echarle un vistazo al cotejamiento de la conexión al servidor, en mi caso lo tengo tal como me venia. En la página principal nada más abrir phpMyAdmin en configuraciones generales tengo puesto utf8mb4_unicode_ci y lo que es la base de datos en sí latin1_swedish_ci

gmarsi
  • 1,402
  • 4
  • 24
  • 46
  • 1
    muchas gracias, miro 000webhost, lo usé un tiempo pero me dijeron que hostinger mejor ... por cierto el error era en el echo para obtener la consulta a la bbdd decodificarlo, ya está en utf8 no hace falta mas – midlab Apr 20 '17 at 22:14