Please ignore secret bonuses. Secret tests do NOT award bonus. Max hw grade is 30+2 bonus efficiency

Do you need help?

Notice Board

Per partecipare al corso di Fondamenti di programmazione 2023-24 loggatevi e attivatelo nella vostra pagina dei corsi preferiti. A quel punto il corso appare nel menù personale cliccando sul proprio avatar. Per i materiali degli anni precedenti seguite lo stesso metodo.

To join the Programming/Lab 2023-24 course, log-on and select it on the my courses page. It will appear on the personal menu of your avatar. For earlier years use the same method.

Homework 2 primo esercizio enconding utf-8

R
Riccardo.Barbacovi (340 points)
3 5 8
in Es1 by (340 points)
recategorized by
Ciao a tutti , io ho fatto il primo homework solo ho dei problemi con l'encoding del codice ossia con utf-8 mi viene a dare dei problemi ossia di errore di lettura ma essendomi andato ad informare su internet ho provato ad usare utf-8-sig e in questa maniera ho concluso il programma e tutto perfetto solo che l'esercizio mi viene a richiedere con utf-8.

L'errore che mi viene a consegnare è \ufeff.

grazie mille delle risposte :)
1.3k views
closed with the note: risolto

1 Answer

Best answer
LeonardoEmili (35740 points)
13 65 155
by (35.7k points)
selected by

Buonasera !

Cercando in rete il tuo problema ho trovato diverse informazioni. Provo quindi a elencarti le soluzioni più plausibili al tuo problema.

L'\ufeff è un carattere UNICODE. Trattasi di una sequenza di byte posti all'inizio del file e viene utilizzato per indicare il tipo di codifica file. Il carattere, denominato BOM, viene utilizzato nella codifica UTF-16 e UTF-32, tuttavia non viene usato dalla codifica UTF-8, codifica che non richiede tale BOM. Tuttavia se stai utilizzando un prodotto Microsoft oppure hai iniziato a scrivere il codice su un prodotto come il Notepad ad esempio e hai poi copiato il tuo codice per terminarlo su Spyder è possibile che tale carattere BOM sia rimasto intrappolato nella copia. tale carattere viene comunque implementato all'inizio del file, e questo è un problema dal momento che Python non lo supporta. Probabilmente avevi risolto con la codifica utf-8-sig perché tale codifica include anch'essa un BOM.

Ecco a te alcune possibili soluzioni:

  • Potresti riscrivere il codice su Spyder oppure su un editor di testo non proprietario Microsoft evitando così l'intrusione di questo carattere desiderato.
  • Sempre cercando in rete ho trovato che molte persone hanno risolto aggiungendo un comando di questo tipo: 
    word = w.replace('\xef\xbb\xbf', '') .Con questo comando tu vai sostanzialmente  a togliere questi caratteri speciali indesiderati, puoi provare ma credo che rielaborare il testo in questo modo rallenterebbe l'esecuzione perché dovrebbe controllare e sostituire ogni occorrenza di tali caratteri.
  • Altrimenti se conosci il carattere "incriminato" puoi tranquillamente cancellarne la riga e riscriverla da Spyder. 
  • Altra soluzione: prova aprendo il file con la funzione load() specificando come codifica utf-8-sig. Questo ti restituirà una stringa in UNICODE senza il BOM. A questo punto puoi ricodificare il tuo file attraverso il comando file.encode("utf-8").

Ricorda che questi caratteri non sono visibili, quindi con tutta probabilità sono stati "trasportati" quando hai copiato la linea da un editor che invece ne faceva uso.

EDIT: Un'altra possibile soluzione sarebbe quella di decodificare il tuo file in utf-8-sig  e ricodificarlo in utf-8. Aggiungo la soluzione alla lista.

Spero sinceramente che tu risolva il tuo problema, fammi sapere

.

Leonardo Emili

R
Riccardo.Barbacovi (340 points)
3 5 8
by (340 points)
Grazie mille alla fine ho risolto :)
LeonardoEmili (35740 points)
13 65 155
by (35.7k points)
Di nulla! Posso chiederti come ? Così se qualcun'altro avrà un problema simile sapremo immediatamente identificarne la causa
R
Riccardo.Barbacovi (340 points)
3 5 8
by (340 points)
avendo provato a riportarlo in encoding utf-8 sembra come che il problema si sia risolto da solo.
Aspetta mi spiego meglio all'inizio in utf-8 non cancellavo la parte dei post degli spazi dopo messa in utf-8-sig ha funzionato e ho completato il programma.
Dopo aver fatto tutto ho riportato tutto il forma utf-8 ed è partito, altrimenti se non partiva mi doveva dare errore sulla cancellazione della parte dei <POST>
LeonardoEmili (35740 points)
13 65 155
by (35.7k points)
Perfetto! Felice che tu abbia risolto !