Ir al contenido


Foto

Problemas Con la codificacion de Caracteres en Consola


  • Por favor identifícate para responder
4 respuestas en este tema

#1 armadillo

armadillo

    Member

  • Miembros
  • PipPip
  • 13 mensajes

Escrito 06 abril 2016 - 01:14

Hola Amig@s!!
Hace mucho tiempo pero mucho tiempo que no toco la consola (Me refiero a nivel Programación)..  quizás por nostalgia decidí hacer una pequeña aplicación en FreePascal para consola de uso personal...
Uso Linux y FreePascal con el entorno de Typhon (Un Clon de Lazarus... Muy recomendable por cierto), bien el problema con el que me he encontrado es que los caracteres especiales, los ASCII que estan por encima del 127 no se ven correctamente ... o sea que los "dibujos" que pueda hacer como lineas o recuadros en pantalla se ven fatal, a si mismo los acentos y ETC... Etc...
He logrado que se vea  correctamente pero he tenido que configurar la Consola como "CodePage IBM850", esto lo se despues de probar con una veintena de opciones  :(,  y la verdad quiero que este en "CodePage UTF-8"
Hay alguna directiva en el compilador para configurar esto?
O alguna función o procedimiento que deba poner en la APP?

Desde ya muchas Gracias!!!


  • 0

#2 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 06 abril 2016 - 03:44

Prueba lo siguiente:


delphi
  1. program AppConsola;
  2.  
  3. {$mode objfpc}{$H+}
  4. {$APPTYPE CONSOLE}
  5.  
  6. uses
  7. {$IFDEF UNIX}
  8. {$IFDEF UseCThreads}
  9. cthreads,
  10. {$ENDIF}
  11. {Widestring manager}
  12. cwstring,
  13. {$ENDIF}
  14. {$IFDEF WINDOWS}
  15. Windows,
  16. {$ENDIF}
  17. Classes
  18. ;
  19.  
  20. var
  21. CadenaUTF8: string;
  22.  
  23. begin
  24. {$IFDEF WINDOWS}
  25. SetConsoleOutputCP(CP_UTF8);
  26. {$ENDIF}
  27. CadenaUTF8:= 'aaachúúú, pésimo, Panamá';
  28. writeln ('plano: ' + CadenaUTF8);
  29. end.

Nota sólo sirve a partir de Windows Vista para arriba.

 

Saludos.


  • 0

#3 monchito_elroro

monchito_elroro

    Advanced Member

  • Miembros
  • PipPipPip
  • 259 mensajes

Escrito 06 abril 2016 - 10:03

Para mostrar caracteres especiales yo suelo usar cualquiera de estos codes:


php
  1. ShowMessage(UTF8Encode('año de acción'));  // este es el que más uso
  2. ShowMessage(UTF8ToSys('año de acción'));

Saludos. :)


  • 0

#4 armadillo

armadillo

    Member

  • Miembros
  • PipPip
  • 13 mensajes

Escrito 07 abril 2016 - 06:27

Hola Amigos,

Gracias por vuestras prontas respuestas, pero  todas estas opciones funcionan en windows, en Linux para ser mas exacto en Fedora 22 no funcionan, y por lo que vi por ahi solo funcionan en Windows...

La verdad que cambiando en la consola el set de caracteres, me funciona, ya os digo que tengo que poner la codificación de carateres de la consola en "Occidental IBM850"... pero claro me mosquea no poder controlarlo yo desde mi aplicacion...

 

Un Saludo


  • 0

#5 monchito_elroro

monchito_elroro

    Advanced Member

  • Miembros
  • PipPipPip
  • 259 mensajes

Escrito 07 abril 2016 - 07:03

Amigo y como así pudiste instalar Lazarus en Fedora :| , yo una vez lo intente y no pude, el único en el que pude fue en Ubuntu. *-)


  • 0




IP.Board spam blocked by CleanTalk.