elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  [PYTHON] Imprimir carácteres Unicode
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [PYTHON] Imprimir carácteres Unicode  (Leído 3,809 veces)
dimineko

Desconectado Desconectado

Mensajes: 32


Ver Perfil
[PYTHON] Imprimir carácteres Unicode
« en: 19 Julio 2019, 21:12 pm »

Hola! Estaba haciendo un script que no tiene que ver con esto,cuando decidí imprimir el símbolo "✓".
Al principio me me imprimia algo parecido a esto: "[?]" pero me lo esperaba ya que es un carácter unicode.
El problema es que tras mirar en mucho stackoverflow y parecidos, no consigo solucionarlo.Ya
Además de no poder imprimir simbolos unicode,no puedo imprimir eñes ni parecido.Esta es la salida del script(el cual va bien).

Además es curioso porque la consola imprime [?] pero si lo copio y pego por ejemplo en este mensaje aparece como ✓.

Este es el código aunque todo va bien, solo es lo de imprimir.
Código
  1. #!/usr/bin/python
  2. # -*- coding: utf-8 -*-
  3. print('\u2713') #ESTO LO IMPRIME COMO [?] AUNQUE AL COPIARLO AQUÍ SE VE EL TICK
  4. print('\u0420\u043e\u0441\u0441\u0438\u044f')  #ESTO LO IMPRIME BIEN (Era por probar)
  5.  
  6. f = open("data.txt","r")
  7. for line in f:
  8. campo = line.split(":")
  9. usuario = campo[0]
  10. contraseña = campo[1]
  11. print ("Usuario: ",usuario,"\tContraseña ",contraseña)  #Las eñes y los acentos los imprime mal.
  12.  


Esta es la salida(pongo imágen porque al copiarlo y pegarlo aquí se corrige,es decir,es en mi consola el error al parecer).


En línea

WHK
Moderador Global
***
Desconectado Desconectado

Mensajes: 6.605


Sin conocimiento no hay espíritu


Ver Perfil WWW
Re: [PYTHON] Imprimir carácteres Unicode
« Respuesta #1 en: 19 Julio 2019, 22:02 pm »

Hola, eso sucede porque en python los bytes unicode no se tratan de la misma manera que un string, los strings deben tener una codificación de caracteres definida que por lo general debe ser utf8 y no todos los caracteres de utf8 son compatibles o visibles.

Lo que debes hacer es tratar la cadena de texto como un array de bytes, por ejemplo:

Código:
b'contenido acá'

Eso es un arreglo de bytes y no un string, por lo cual ya no te dará problemas en la codificación de caracteres, luego si lo quieres mostrar en pantalla debes utilizar la función decode() junto a la codificación de caracteres que quieres utilizar.

Probablemente el valor unicode de tu check no corresponde al valor visible en utf8 o talves tu consola de comandos no está funcionando en utf8, generalmente estos errores suceden en windows, en linux jamás tendrás este tipo de problemas ya que el bash carga por defecto utf8, en cambio windows carga por defecto latin iso.

Si usas windows debes intentar modificar tu consola de comandos para que funcione bajo utf8 o escribir el valor unicode del check pero en latin iso.

Según https://graphemica.com/%E2%9C%93 ese caracter con ese mismo valor en bytes es un check pero en utf8 solamente, en latin iso tiene otro valor (lo mismo sucede con la eñe).

Saludos.


« Última modificación: 19 Julio 2019, 22:05 pm por WHK » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Python] Strings a unicode
Scripting
O-LLOS-O 4 5,128 Último mensaje 30 Julio 2010, 21:00 pm
por O-LLOS-O
[FUNCION] IsUnicode (Determina si una cadena contiene caracteres unicode o no) « 1 2 »
Programación Visual Basic
79137913 17 8,887 Último mensaje 19 Noviembre 2013, 20:54 pm
por Danyfirex
[python] ayuda caracteres especiales tildes y ñ python
Scripting
asdexiva 5 10,641 Último mensaje 10 Agosto 2014, 01:49 am
por asdexiva
[Python] Imprimir caracteres especiales [Resuelto]
Scripting
MA40 1 6,594 Último mensaje 5 Octubre 2016, 01:50 am
por MA40
unicode en python
Scripting
preguntas12 3 2,507 Último mensaje 18 Abril 2017, 01:17 am
por Once
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines