Forum
>>
Programmazione Python
>>
Database
>>
lettere accentate
Pagina: 1
Esegui il login per scrivere una risposta.
Pagina: 1
Scritto da luigi6 |
2019-02-04 18:58:14 - lettere accentate
|
se uso u"attività" il programma funziona, di conseguenza vorrei sapere: come posso usare la u su una variabile ?
Ho provato diverse soluzioni ma non funzionano (tipo variabile.encode(...) e altro) grazie modifica: versione python 2.6 e vorrei mantenerla --- Ultima modifica di luigi6 in data 2019-02-04 20:55:06 --- |
|
Scritto da RicPol |
2019-02-04 22:33:15 - Re: lettere accentate
|
e questo con il database c'entra perché................?
https://pythoninwindows.blogspot.com/p/i-miei-libri.html : i miei libri
https://pythoninwindows.blogspot.com : il mio blog |
|
Scritto da Daniele aka Palmux |
2019-02-05 09:21:37 - Re: lettere accentate
|
Nulla.
|
|
Scritto da RicPol |
2019-02-05 11:32:33 - Re: lettere accentate
|
Eh sì, in questo caso probabilmente sì... Anche se nel mondo reale i database sono spesso una fonte di curiosi problemi unicode.
Detto questo, ho anche paura che il problema dell'OP non sia unicode, ma sia la comprensione di che cosa è una variabile e che cosa è un oggetto. Una variabile è un riferimento che punta a un oggetto. Un oggetto che rappresenta una stringa di testo, in py2, può essere un oggetto "str" (una sequenza di bytes con encoding arbitrario) oppure un oggetto "unicode" (una sequenza di code point unicode). Quindi non esistono "variabili con la u davanti", semmai esistono "oggetti con la u davanti" (perché la "u" è un modo per specificare che il literal seguente va inteso come oggetto unicode e non come bytes). Se l'OP è sicuro che la sua variabile punta a un oggetto unicode, bene. Se l'OP è sicuro che la sua variabile punta a un oggetto "str", bene lo stesso. Se l'OP non è sicuro se la sua variabile si riferisce a un oggetto unicode o un oggetto str, molto male ma non c'è niente da fare (tranne provare a indovinare, si capisce). Se poi l'OP ha una variabile che punta a un oggetto "str" e vuole castare questo oggetto da "str" a "unicode", può usare la funzione globale "unicode" documentata qui: https://docs.python.org/2.7/library/functions.html#unicode . Per fare questo, ovviamente (ovviamente!) deve conosce l'encoding in cui è encodata la sua stringa di bytes. Se non conosce l'encoding di quei bytes, allora è nei guai (e deve tirare a indovinare). (detto questo, disclaimer standard: l'idea che l'OP abbia py2.6 e "vorrebbe mantenerla" nel 2019 è onestamente e sinceramente una follia. L'unica speranza è che nessuno ma proprio nessun altro debba mai usare il codice scritto dall'OP). https://pythoninwindows.blogspot.com/p/i-miei-libri.html : i miei libri
https://pythoninwindows.blogspot.com : il mio blog |
|
Scritto da luigi6 |
2019-02-05 12:36:20 - Re: lettere accentate
|
Cerco di spiegarlo meglio, ho fatto un po' di casino
Questa conversione mi serve per dei dati che voglio portare su mysql, e in origine la mia intenzione era quella di porvi la domanda relativamente al database. Poi nello scriverla mi sono completamente dimenticato di mysql in quanto li aggiungerò tramite phpmyadmin. Il problema è questo: Ho un programma con tutti i file impostati con coding: iso-8859-1 (la seconda riga di ogni file). Questo programma ha la funzione di memorizzare dei dati su file tramite pickle con dump di liste. All'interno ci sono dati con lettere accentate e qualche carattere speciale (tipo ' è ), e nella conversione mi da questo errore: 'ascii' codec can't decode byte 0xe0 in position 12: ordinal not in range( 128 ) succede su una parola ("attività") ,questo se non uso nulla per utf-8. L'errore è su una riga dove unisco più stringhe : str= str1 + str-con-lettera-accentata + str2. Poi ho fatto varie prove con errori diversi, ma il punto di partenza è quello che ho spiegato. L'intenzione è quella di scrivere un file di istruzioni sql e poi darlo in pasto a phpmyadmin Scusate per l'errore ma l'intenzione era quella di usare mysql, ma è anche vero che ho fatto l'errore di non specificarlo. --- Ultima modifica di luigi6 in data 2019-02-05 12:37:51 --- --- Ultima modifica di luigi6 in data 2019-02-05 12:38:39 --- |
|
Scritto da luigi6 |
2019-02-05 15:03:07 - Re: lettere accentate
|
Risolto...
in pratica alcune stringhe non erano codificate bene da impostazione di programma (la classica seconda riga). Partendo da wxpython, ho usato la format di wxdatetime ma non codifica nel modo impostato da programma. In questo modo : str-dopo-format=str-dopo-format.encode("iso-8859-1"). Ma non solo questa anche altre stringhe. Devo decidermi a cambiare tutto con il nuovo python ma il lavoro è lungo, ho diversi programmi. |
Pagina: 1
Esegui il login per scrivere una risposta.