0

Hace días he tenido problemas con la letra "ñ" al momento de guardar y listar, las letra se guardan bien y se muestra bien dentro del php y html, pero cuando reviso la base datos se muestra así: introducir la descripción de la imagen aquí

Esto se hace desde un javascript que es una table desplegable según el numero que se digite, osea sin digita 2 el javascript despliega 2 filas, etc.

código javascript:

var contLin = 1;

function agregar() {

    var tr, td;
    var con=0;
while(con<document.getElementById('numer').value){

    tr = document.all.tabla.insertRow();

    td = tr.insertCell();
    td.innerHTML = "<input type='text'  id='fts_nombre' name='fts_nombre[]'  onkeypress='return event.charCode != 39' >";
    td = tr.insertCell();
    td.innerHTML = "<input type='text' id='fts_apellido' name='fts_apellido[]' onkeypress='return event.charCode != 39' >";
    td = tr.insertCell();
    td.innerHTML = "<input type='text' id='fts_parentezco' name='fts_parentezco[]' onkeypress='return event.charCode != 39' >";
    td = tr.insertCell();
    td.innerHTML = "<input type='text' id='fts_edad' name='fts_edad[]'  onkeypress='return event.charCode != 39' >";
    td = tr.insertCell();
    td.innerHTML = "<input type='text' id='fts_escolaridad' name='fts_escolaridad[]' onkeypress='return event.charCode != 39' >";
    td = tr.insertCell();
    td.innerHTML = "<input type='text' id='fts_ocupacion' name='fts_ocupacion[]' onkeypress='return event.charCode != 39'>";

    td = tr.insertCell();
    td.innerHTML = "<input type='text' id='fts_vive' name='fts_vive[]' onkeypress='return event.charCode != 39'  >";

    contLin++;
con++;
}

}


function borrarUltima() {
    ultima = document.all.tabla.rows.length - 1;
    document.all.tabla.deleteRow(ultima);
    contLin--;
}

function MAS(){
document.getElementById('pariente').style.display='block';
}

introducir la descripción de la imagen aquí

Yero
  • 321
  • 1
  • 3
  • 13
  • 3
    Tienes que ver que el charset sea de tipo `utf-8` – DaxTter77 Sep 05 '19 at 16:39
  • Eso quiero hacer , pero no se donde colocarlo dentro de javascript, solo lo he utilizado en php.Dentro de la base de datos esta como utf8_spanish_ci cosa que ha funcionado bien para el resto de las tablas. – Yero Sep 05 '19 at 16:40
  • Pero en la base de datos lo tienes definido así? – DaxTter77 Sep 05 '19 at 16:40
  • utf8_spanish_ci, asi ha funcionado para el resto de las tablas – Yero Sep 05 '19 at 16:41
  • Intenta meter tú manualmente desde phpmyadmin una ñ en la tabla, sí te inserta así es el charset, síno, es como le llega al php – DaxTter77 Sep 05 '19 at 16:45
  • La base de datos deja insertar bien la ñ, pero cuando quiero verla a través del php sale otro símbolo, voy a subir la imagen. – Yero Sep 05 '19 at 16:47
  • Hola, aqui hay una explicación detallada sobre el problema que tienes [¿Por que el Carácter inspector (�) aparece en algunos datos obtenidos de la Base de Datos?](https://es.stackoverflow.com/q/59489/77879) – the-breaker Sep 05 '19 at 16:56
  • En la db solo tienes que cambiar a todos los campos que vas a necesitar por el utf8_spanish_latin – Allegro Canttabile Sep 05 '19 at 23:50

3 Answers3

1

Revisa todas las codificaciones de caracteres como el (encoding en la base de datos, y en todo tu proyecto) verifica que estés usando el UTF-8.

en la parte de la conexion con la base de datos Mysql puedes usar.

mysqli_set_charset($con, 'utf8');

Otra opción es que uses utf8_decode() y utf8_encode()

Nota: recuerda revisar tus codificaciones tanto en el html

Jozeslond
  • 108
  • 10
  • 3
    Ufff. Codificar y decodificar todo debería ser la última opción! :) – Alfabravo Sep 05 '19 at 16:51
  • utf8_decode() y utf8_encode() ya lo utilice dentro del controlador y no funciona, l a primera opción ya la descarte, y la segunda opción no se donde debe ir dentro de la consulta. – Yero Sep 05 '19 at 16:55
  • en parte funciono por que antes nisiquiera mostraba las ñ al listarlas, pero el problema radica en como se muestra en la BD. – Yero Sep 05 '19 at 16:56
  • Revisa el encoding en la base de datos (Mysql) – Jozeslond Sep 05 '19 at 16:58
  • puedes alterar la tabla "ALTER TABLE `nombre_tabla` COLLATE=’utf8_general_ci’; – Jozeslond Sep 05 '19 at 16:59
1

Fijáte en el archivo php que guarda en la BD, poner:

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

También abrí el archivo .php que guarda con el notepad, y fijate de hacer guardar como y en el charset poner utf-8 y no ANSI. Y hace tambien lo que dice @Jozeslond. Saludos.

Rafael Bautista
  • 2,603
  • 6
  • 20
  • 35
Cribelo
  • 436
  • 3
  • 16
1

por fin funciono, agregue var textoUtf8 = utf8_encode(texto); dentro del javascript ya que este era el que generaba la tabla dentro del php principal que en si tenia mas inputs,todos las repuestas me fueron útiles . Gracias.

var contLin = 1;

var textoUtf8 = utf8_encode(texto);


function agregar() {

    var tr, td;
    var con=0;


while(con<document.getElementById('numer').value){

    tr = document.all.tabla.insertRow();

    td = tr.insertCell();
    td.innerHTML = "<input type='text'  id='fts_nombre' name='fts_nombre[]'  onkeypress='return event.charCode != 39' >";
    td = tr.insertCell();
    td.innerHTML = "<input type='text' id='fts_apellido' name='fts_apellido[]' onkeypress='return event.charCode != 39' >";
    td = tr.insertCell();
    td.innerHTML = "<input type='text' id='fts_parentezco' name='fts_parentezco[]' onkeypress='return event.charCode != 39' >";
    td = tr.insertCell();
    td.innerHTML = "<input type='text' id='fts_edad' name='fts_edad[]'  onkeypress='return event.charCode != 39' >";
    td = tr.insertCell();
    td.innerHTML = "<input type='text' id='fts_escolaridad' name='fts_escolaridad[]' onkeypress='return event.charCode != 39' >";
    td = tr.insertCell();
    td.innerHTML = "<input type='text' id='fts_ocupacion' name='fts_ocupacion[]' onkeypress='return event.charCode != 39'>";

    td = tr.insertCell();
    td.innerHTML = "<input type='text' id='fts_vive' name='fts_vive[]' onkeypress='return event.charCode != 39'  >";

    contLin++;
con++;
}

}


function borrarUltima() {
    ultima = document.all.tabla.rows.length - 1;
    document.all.tabla.deleteRow(ultima);
    contLin--;
}

function MAS(){
document.getElementById('pariente').style.display='block';
}
Yero
  • 321
  • 1
  • 3
  • 13