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

 

 


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Python falla en usar la ñ.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Python falla en usar la ñ.  (Leído 516 veces)
Tachikomaia


Desconectado Desconectado

Mensajes: 1.437


Hackentifiko!


Ver Perfil
Python falla en usar la ñ.
« en: 2 Diciembre 2024, 04:44 am »

cuando le pongo ñ a charset no funciona:
Código
  1. charset = "abcdefghijklmnñopqrstuvwxyz"
  2. with open("passwords.txt", "w", encoding="utf-8") as txt :
  3.  for a in charset :
  4.    for b in charset :
  5.      for c in charset :
  6.        for d in charset :
  7.          txt.write(a + b + c + d + "\n")
¿qué hago para que funcione con ñ?

Citar
El problema puede deberse a cómo Python maneja la codificación al escribir en un archivo. Aunque estás especificando `encoding="utf-8"` al abrir el archivo, puede haber conflictos si el sistema en el que estás ejecutando el script no interpreta correctamente los caracteres extendidos, como la `ñ`.

Aquí tienes una solución que debería funcionar correctamente:

### Solución:

1. **Asegúrate de que tu archivo fuente esté guardado en UTF-8**. Si tu editor de texto no guarda el archivo fuente en UTF-8, la `ñ` podría no ser interpretada correctamente. En editores como VS Code, puedes configurar la codificación en UTF-8.

2. **Verifica que la consola/terminal interprete UTF-8**. Si estás ejecutando el código en una terminal que no maneja UTF-8, podría haber problemas al visualizar o procesar caracteres como la `ñ`.

3. **Código corregido:**

```python
# Definir el charset con la letra ñ
charset = "abcdefghijklmnñopqrstuvwxyz"

# Abrir el archivo en modo escritura, asegurando la codificación UTF-8
with open("passwords.txt", "w", encoding="utf-8") as txt:
    # Generar todas las combinaciones de 4 caracteres
    for a in charset:
        for b in charset:
            for c in charset:
                for d in charset:
                    # Escribir cada combinación en una nueva línea
                    txt.write(a + b + c + d + "\n")
```

4. **Verifica el archivo generado**. Tras ejecutar el código, abre el archivo `passwords.txt` con un editor que soporte UTF-8 para confirmar que las combinaciones con la `ñ` se generan correctamente.

### Qué hacer si sigue sin funcionar:

Si el problema persiste, puede ser útil probar estas opciones:

- **Forzar la codificación UTF-8 en tu entorno Python**. Asegúrate de que Python esté utilizando UTF-8 por defecto. Puedes agregar esta línea al inicio de tu script:

  ```python
  import sys
  sys.stdout.reconfigure(encoding='utf-8')
  ```

- **Revisar el entorno de ejecución**. Si estás en Windows, puedes configurar la consola para que use UTF-8 ejecutando este comando en la terminal antes de correr el script:

  ```cmd
  chcp 65001
  ```

### Explicación del problema:

La `ñ` es un carácter que no está en el conjunto básico ASCII. Si hay un desajuste en la codificación entre tu archivo fuente, el entorno Python o el archivo de salida, podría causar que la `ñ` no se procese correctamente. Al usar `encoding="utf-8"` y asegurarte de que todo tu entorno soporte UTF-8, deberías poder manejar la `ñ` sin problemas.
¿Se supone que en eso está la solución?

Lo que me sucede es que el archivo py se cierra enseguida y no se genera el archivo que quiero.


En línea

MCKSys Argentina
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.520


Diviértete crackeando, que para eso estamos!


Ver Perfil
Re: Python falla en usar la ñ.
« Respuesta #1 en: 2 Diciembre 2024, 11:37 am »

Hola!

Revisa PEP-263: https://peps.python.org/pep-0263/

Saludos!

PD: Sería conveniente que uses un IDE para desarrollar en python, por ej Pycharm. El mismo IDE puede corregirte en muchas cosas, mientras estás escribiendo código.


En línea

MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."

EdePC
Moderador Global
***
Desconectado Desconectado

Mensajes: 2.172



Ver Perfil
Re: Python falla en usar la ñ.
« Respuesta #2 en: 2 Diciembre 2024, 13:18 pm »

Estás usando Windows 7 y como es algo antiguo su Bloc de Notas por defecto guarda con codificación ANSI, Python por defecto trabaja con UTF-8 y si no le dices lo contrario para él le estás dando un archivo de código bajo esa codificación.

Opción 1: Si usas el Bloc de Notas de Windows 7 guarda tu archivo de código bajo la codificación UTF-8:



Opción 2: Especifica en tu código el tipo de codificación que estás usando para que Python no asuma que es UTF-8 y mande error ("se cierra rápido"), como el Bloc de Notas de Windows 7 por defecto guarda en ANSI pues tu primera línea en tu código debe ser: # -*- coding: ANSI -*-, esto es parte del PEP-263 que menciona MCKSys Argentina

Código
  1. # -*- coding: ANSI -*-
  2.  
  3. charset = "abcdefghijklmnñopqrstuvwxyz"
  4. with open("passwords.txt", "w", encoding="utf-8") as txt :
  5.  for a in charset :
  6.    for b in charset :
  7.      for c in charset :
  8.        for d in charset :
  9.          txt.write(a + b + c + d + "\n")

- Con eso le dices que tu archivo de código está en ANSI, obviamente debe estar guardado como ANSI, repito: por defecto el Bloc de Notas de Windows 7 guarda en ANSI

Opción 3: Usa un editor de texto plano más actual, por ejemplo Notepad++ o SublimeText que ofrecen coloreado y cierta ayuda para trabajar con código (por defecto ya guardan en UTF-8), estos son muy ligeros pero al no especializarse con un lenguaje no serán tan potentes como un IDE como el que recomendó MCKSys Argentina: PyCharm (PyCharm Comunity es gratis) que debe estar pesando sus 500 MB y no si será compatible con tu Windows 7, tengo entendido que trabajas con Flash 5 que de IDE tiene poco, no tiene autocompletar ni ayudas como si lo tienen los Flash modernos tal cual tienen los IDE como PyCharm

---
- Si quieres saber bajo que codificación está guardado tu archivo de código usando el Bloc de Notas solo dale en Guardar como y verás debajo su codificación actual (ANSI o UTF-8)

- Tu código se ejecuta en modo Consola, por ello se cierra cuando termina o da error. Como toda aplicación de consola debes abrir una Consola para ejecutar ahí tu script y ver más detalles/errores, acá replico tu error:



Ese \xF1 que es el hexadecimal 0xF1 corresponde al caracter ñ en codificación ANSI, Python da error porque esperaba un caracter UTF-8 que usa dos bytes para representar caracteres no ASCII, 0xC3 0xB1 corresponden a la ñ en UTF-8

- Si no hay errores no hubiera problemas en ejecutarlo en la consola o directamente, al menos no en este caso porque no muestra ningún resultado en pantalla (no hay print() de python o "trace() de ActionScript")

En línea

Tachikomaia


Desconectado Desconectado

Mensajes: 1.437


Hackentifiko!


Ver Perfil
Re: Python falla en usar la ñ.
« Respuesta #3 en: Ayer a las 04:05 »

Revisado.

Citar
Sería conveniente que uses un IDE para desarrollar en python, por ej Pycharm. El mismo IDE puede corregirte en muchas cosas, mientras estás escribiendo código.
Dice que ocupa casi 3GB... espacio tengo, pero ¿todo eso para escribir y que corrija lo que escribo?

el Bloc de Notas de Windows 7 por defecto guarda en ANSI pues tu primera línea en tu código debe ser: # -*- coding: ANSI -*-
Por ahora haré eso.

Me sirvió lo de la consola también, si habré abierto archivos que se cerraban y no veía qué hacían...

Citar
Flash 5 que de IDE tiene poco, no tiene autocompletar ni ayudas como si lo tienen los Flash modernos tal cual tienen los IDE como PyCharm
A la izquierda tiene la mayoría de posibles comandos. Tiene modo normal y experto. El normal cuando hay un error te lo marca con rojo, además al cliquear la línea, abajo te muestra qué se debe poner. Yo uso el modo experto que es más rápido y libre de editar, pruebo el programa y los errores de sintaxis si hay los dice en la salida.
Lo que me hace falta es que las letras se vean más grandes, pero para eso está el bloc de notas xD

Funcionó.
« Última modificación: Ayer a las 04:07 por Tachikomaia » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines