Ver Mensaje Individual
  #1 (permalink)  
Antiguo 14/06/2013, 03:02
alyciashape
 
Fecha de Ingreso: abril-2012
Mensajes: 590
Antigüedad: 12 años, 9 meses
Puntos: 58
Problema codificación de caracteres. Como ver TODOS los caracteres?

Buenas a todos,

estoy trabajando con MySQL, Dbase y demás. Mi web está en utf8. DBase parece ser que traba con el formato IBM-860 o algo así. Como me conecto por odbc las consultas me vienen en ASCII, así que las codifico en UTF-8 con utf8_encode.

Luego eso se carga en un formulario, hacen algunas modificaciones, las envían y se guardan en dbase otra vez, para ello decodifico el utf8 con utf8_decode, de lo contrario los acentos y otros caracteres salen con interrogaciones.

Estoy usando Code Igniter como dato extra.

A veces me daba error al insertar hasta que tras mucho investigar descubrí que el \n le genera algún problema a dbase así que tuve que substituir todos los \n y \n\r por \r a secas.

A mayores aún hay datos que me siguen dando error al insertar. El caso es que me aparece la consulta con el error y un caracter con el símbolo <?> y yo ahí no veo ningún caracter (antes de insertar). Presupongo que es otro tipo de salto de línea, espacio en blanco o cualquier cosa. Como puedo ver el código que pertenece a ese caracter? o como puedo saber qué hay ahí?

PD: me parece que el problema siguen siendo los saltos de línea. Si retiro todos si que funciona. Debe de ser que si hago el utf8_decode de un salto de línea se "estropean". No se como arreglar esto.

Un saludo.

Como puedo hacer para ver los saltos de línea de un string?

Código PHP:
Ver original
  1. $notas = utf8_decode($this->input->post('notas'));
  2. echo substr_count($notas, "\r\n");
  3. echo substr_count($notas, "\n\r");
  4. echo substr_count($notas, "\n");
  5. echo substr_count($notas, "\r");
  6. /*
  7. Devuelve
  8. 6
  9. 3
  10. 6
  11. 6
  12.  
  13. Si hago un $notas = str_replace("\r\n", "", $notas); devuelven 0 y lo inserta pero necesito los saltos de línea.
  14. Si en lugar de substituirlo por espacio en blanco lo substituyo por \n o por \r da error. Alguna ayuda?
  15.  
  16. */

Lo curioso es que si la línea es generada desde el formulario (no cuando viene de dbase) y hago esto:
Código PHP:
Ver original
  1. $notas = str_replace("\r\n", "\r", $notas);

Si que funciona. Cuando la nota viene de dbase con saltos de línea es cuando NO funciona.

Última edición por alyciashape; 14/06/2013 a las 03:42