2

Tengo problemas con mi BDD y los acentos; Estoy manejando una BDD mediante API con Android Studio, al insertar datos se colocan caracteres raros, ya he establecido mi BDD, la tabla y las columnas como utf8_general, pero no parece funcionar

introducir la descripción de la imagen aquí

Manejo la API con tres archivos, el Modelado, el controlador y la API misma, ya intenté usar utf8_encode() en las tres pero sigue sin funcionar de manera correcta.

Llegué a pensar que el error provenía desde Android Studio así que probé con Postman y aún así falló, también creí que era entre los cambios de archivos así que hice una inserción directa desde el modelado, pero también falló, no sé qué pueda ser, espero alguien sepa.

Modelado:

introducir la descripción de la imagen aquí

Controlador:

introducir la descripción de la imagen aquí

API:

introducir la descripción de la imagen aquí

Conexión:

introducir la descripción de la imagen aquí

Luis Julio
  • 43
  • 4
  • Buenas, hasta donde recuerdo, existen diferentes formatos para las columnas de tipo UTF-8, por favor, compruébalos todos. – EduBw Apr 16 '20 at 08:29
  • Todas tus configuraciones deben estar en UTF-8. Y, si los datos provienen de algún archivo de texto u otro verifica también que la codificación del mismo sea también UTF-8. Lee detenidamente [esta respuesta](https://es.stackoverflow.com/a/59510/29967). Si todo está OK según lo dicho ahí, verifica que también desde Android estás mandando los datos con la codificación adecuada. – A. Cedano Apr 16 '20 at 09:15
  • En UTF8 no existen los acentos ni ñ, por ende lo que viste es la representación que hace UTF8 para caracteres especiales, eso no es ningún problema solo debes hacer la conversión cuando quieras mostrar dichos campos. – rpaillao Apr 16 '20 at 11:54
  • ¿Responde esto a tu pregunta? [¿Por que el Carácter inspector (�) aparece en algunos datos obtenidos de la Base de Datos?](https://es.stackoverflow.com/questions/59489/por-que-el-car%c3%a1cter-inspector-aparece-en-algunos-datos-obtenidos-de-la-base) – BetaM Apr 16 '20 at 20:53

1 Answers1

1

Hola podrías probar especificando el charset de tu conexión de base de datos, añadiendo utf8mb4 a tu conexión:

$link = new PDO("mysql:host=$localhost;dbname=$database;charset=utf8mb4",$user, $password);

Remplaza el cotejamiento en tu base de datos y tablas de utf8_general_ci por utf8mb4_general_ci:

utf8mb4_general_ci
BetaM
  • 30,571
  • 7
  • 32
  • 50
jonasdamher
  • 1,758
  • 1
  • 4
  • 15