[Python] Problemi con l'encoding/decoding dei locales
michele a nectarine.it
michele a nectarine.it
Mar 30 Set 2008 20:02:26 CEST
Ciao,
sto usando uno script Python in congiunzione con JPype, un framework
per usare classi Java in Python. Ho però un problema, forse legato ai
decoding/encoding dei locales.
Passiamo subito al codice:
from jpype import *
import os
import random
import math
import sys
input = open('foo.img','rb').read().decode('ISO-8859-1')
square = java.encoding(input)
output = java.decoding()
fd = open('foo_decode.img','wb')
fd.write(output.encode('ISO-8859-1'))
fd.close()
sys.exit(0)
java.encoding e java.decoding sono due metodi che, rispettivamente,
prendono come argomento una java String e restituiscono una java
String. JPype si occupa del bridging e converte una java String in una
python str o unicode string, e viceversa. Di conseguenza, input e
output, nel mio programma, sono due unicode.
Qual è il problema? Dovrei ottenere un output identico all'input
(byte per byte), ma non succede.
Prima di tutto: python mi ha "obbligato" ad usare il
.decode('ISO-8859-1') e .encode('ISO-8859-1'), altrimenti non avrebbe
letto/scritto il file specificato.
Inoltre, le librerie Java sono perfettamente funzionanti: ho provato
io stesso ad usarle tramite lo stesso input (foo.img) e all'uscita del
decoder ho ottenuto lo stesso file, quindi escludo degli errori delle
lib.
Sospetto che la differenza tra input e output siano dovute al
decoding/encoding di python: sono proprio necessari?
Voi che ne pensate?
Vi ringrazio
Maggiori informazioni sulla lista
Python