Jump to content
Nokioteca Forum

Dannate Lettere Accentate


bob41
 Share

Recommended Posts

vi scrivo il codice così faccio prima a spiegare il mio problema

import appuifw

import audio

text=appuifw.query(u"insrisci alcune parole","text")

if text=="perchè parli":

audio.say("perchè sono più intelligente di te")

come faccio a fargli accettare le lettere accentate?!?!?!?!?!?!?

ho gia provato a mettere le righe

#!/usr/bin/python

# -*- coding: <encoding name> -*-

ma non funziona (ovviamente ad <encoding name> ho sostituito utf-8,latin-1 le ho provate tutte)

Link to comment
Condividi su altri siti

vi scrivo il codice così faccio prima a spiegare il mio problema

import appuifw

import audio

text=appuifw.query(u"insrisci alcune parole","text")

if text=="perchè parli":

audio.say("perchè sono più intelligente di te")

come faccio a fargli accettare le lettere accentate?!?!?!?!?!?!?

ho gia provato a mettere le righe

#!/usr/bin/python

# -*- coding: <encoding name> -*-

ma non funziona (ovviamente ad <encoding name> ho sostituito utf-8,latin-1 le ho provate tutte)

Uhm strano che non ti funziona...Ah no spetta ecco perchè! Devi mettere una "u" davanti alla stringa...

u"èèòàòèòèòà"

;)

Cmq tempo fa avevo scritto in un post un tutorial di queste codifiche che, effettivamente, agli inizi creano molta confusione :P

EDIT: ovviamente devi mettere in intestazione quello che hai detto, coding ecc...

Piccolo ripasso: da unicode a stringa "normale" -> stringa_uni.decode("utf8")

da stringa a unicode -> stringa_non_uni.encode("utf8")

EDIT2: ecco qui quello che avevo postato http://www.nokioteca.net/home/forum/index.php/topic/194147-pys60-presentazione-sulle-codifiche-e-chiarimenti-interessanti/

rispolvero anche il mio vecchio tips and tricks hehe

http://www.nokioteca.net/home/forum/index.php/topic/123402-pys60-tips-tricks/

Modificato da memoryn70
Link to comment
Condividi su altri siti

Però dovresti dirmi a che linea ti da il problema altrimenti non me lo posso inventare.

Comunque ora che ci penso, mi pare che la audio.Say avesse qualche problema in merito a ciò. Prova con questo:

audio.Say(u"+èè+òàà".encode("utf8"))

Facendo ciò gli passi una stringa normale e non unicode. Altrimenti prova

audio.Say("+èè+òàà".decode("utf8"))

forse anche

#!/usr/bin/python

# -*- coding:latin-1-*-

A prescindere mi devi dare L'ESATTO errore che ti da :thumbs:

EDIT: cmq è normale che non funziona una cosa del genere

text = appuifw...

if text == "asdasd"

perché gli elementi della UI (in particolare in appuifw) ritornano quasi tutte se non tutte UNICODE.

QUindi è appropriato

text == u"asdasd"

Altrimenti il python cerca di fare la conversione automaticamente ad ascii e il suo asccii si limita a 128 valori (4 byte)...Dovresti cambiare sys.setdefaultencoding = "utf8" o simili. Purtroppo è un po che non mi cimento in python e qualche cosa potrebbe essere imprecisa hehe

Modificato da memoryn70
Link to comment
Condividi su altri siti

ti posto l'errore

sempre con

#!/usr/bin/python

# -*- coding:utf-8-*-

if text==u"perchè parli":

audio.say(u"perchè sono più intelligente di te")

ecco l'errore:

Traceback (most recent call last):

File "default.py", line 94, in menu_action

f()

File "default.py", line 62, in query_and_exec

script_namespace.namespace)

UnicodeDecodeError: 'utf8' codec can't decode byte 0xe9 in position 0: unexpected end of data

non so se serve ma io nel primo post ho messo una parte del prog quella su cui mi dava l'errore se serve l'intero codice dimmelo che lo posto

Link to comment
Condividi su altri siti

ti posto l'errore

sempre con

#!/usr/bin/python

# -*- coding:utf-8-*-

if text==u"perchè parli":

audio.say(u"perchè sono più intelligente di te")

ecco l'errore:

Traceback (most recent call last):

File "default.py", line 94, in menu_action

f()

File "default.py", line 62, in query_and_exec

script_namespace.namespace)

UnicodeDecodeError: 'utf8' codec can't decode byte 0xe9 in position 0: unexpected end of data

non so se serve ma io nel primo post ho messo una parte del prog quella su cui mi dava l'errore se serve l'intero codice dimmelo che lo posto

più che altro non capisco quale linea intende...se riesci si posta tutto!

Comunque è un errore che ti dirò non avevo mai ricevuto...uhm...uhm

Link to comment
Condividi su altri siti

ecco tutto :thumbs:

è una cavolta per imparare ad usare python

#-*- coding:utf-8-*-

d=0
while d !=2:

  import sysinfo
  import appuifw
  import audio


  appuifw.app.title=(u'PARLAMI')
  def quit():
      appuifw.app.set_exit()
  appuifw.app.exit_key_handler=quit()

  text=appuifw.query(u"inserisci alcune  parole","text")
  def percentuale():
     a=sysinfo.battery()
     audio.say("la batteria e al %s per cento" %a)
  def batteriast():
     a=sysinfo.battery()
     if a<16:
        audio.say("sono morto, mettimi in carica")
        percentuale()
     elif 15<a<31:
        audio.say("sono scarico,mettimi in carica")
        percentuale()

     elif 30<a<50:
        audio.say("sono quasi scarico,mettimi in carica")
        percentuale()
     elif 49<a<56:
        audio.say("ho a disposizione mezza della batteria")
        percentuale()
     elif 55<a<66:
        p=audio.say("carico appena sopra la meta")
        percentuale()
     elif 65<a<80:
        audio.say("sono carico sopra la meta")
        percentuale()
     elif 79<a<100:
        audio.say("sono carico abbastanza"  )
        percentuale() 
     else:
        audio.say("sono al 100% della carica")
#-----------------------------------------------------------------------------
  if text=="Stupido":
     audio.say("stupido sarai tu")
  elif text=="Come stai":
     batteriast()     
  elif text==u"Perchè parli":
     e=''
     audio.say(u"perchè sono piu intelligente di te" )
  elif text=="Ciao":
     audio.say("ciao, come stai?")
  elif text=="Io bene e tu":
     batteriast()
  elif text=="Io bene":
     batteriast()
  elif text=="Io male":
     batteriast()
  elif text=="Bene":
     batteriast()
  elif text=="Male":
     batteriast()
  elif text=="Imei":
     p=sysinfo.imei()
     audio.say(p)
     appuifw.note(u"il tuo imei e' %s" %p,"info")
  elif text=="Esci":
     audio.say("ciao alla prossima")
     d=2
     quit()

  else:
     audio.say(text)

Modificato da bob41
Link to comment
Condividi su altri siti

Innanzitutto tira subito fuori quegli import dal ciclo while ;) Oltre che a essere controproducente è completamente inutile...basta una volta sola, in genere all'inizio dello script o dove serve insomma.

Anche le varie funzioni non mettermele nel while! Mettile prima del while, altrimenti le vai a ridefinire ogni volta....

Ecco messo cosi (vediti ciò che ho cambiato) sembra funzionare. Non ho idea del perchè con una sola lettara accentata crasha ma i messaggi me li dice. Boh prova un po' ;)

Ricordati che se compari (==) due stringhe, per evitare rogne devono essere o tutte e due unicode o tutte e due "normali".

Controlla anche le funzioni che usi (cioè i parametri) se accetta unicode, occhio che la conversione automatica è meglio evitarla.

#!/usr/bin/ python
# -*- coding: latin-1 -*-

import sysinfo
import appuifw
import audio

appuifw.app.title=u'PARLAMI'

def quit():
      appuifw.app.set_exit()

appuifw.app.exit_key_handler=quit()

def percentuale():
  a=sysinfo.battery()
  audio.say(u"la batteria e al %s per cento" %a)
def batteriast():
     a=sysinfo.battery()
     if a<16:
        audio.say(u"sono morto, mettimi in carica")
        percentuale()
     elif 15<a<31:
        audio.say(u"sono scarico,mettimi in carica")
        percentuale()

     elif 30<a<50:
        audio.say(u"sono quasi scarico,mettimi in carica")
        percentuale()
     elif 49<a<56:
        audio.say(u"ho a disposizione mezza della batteria")
        percentuale()
     elif 55<a<66:
        p=audio.say(u"carico appena sopra la meta")
        percentuale()
     elif 65<a<80:
        audio.say(u"sono carico sopra la meta")
        percentuale()
     elif 79<a<100:
        audio.say(u"sono carico abbastanza"  )
        percentuale() 
     else:
        audio.say(u"sono al 100% della carica")

d=0
while d !=2:   

  text=appuifw.query(u"inserisci alcune  parole","text")
#Occhio che qui siamo case sensitive mi raccomando 
  if text == u"Stupido":
     audio.say(u"stupido sarai tu")
  elif text == u"Come stai":
     batteriast()     
  elif text == u"Perchè parli":
     e=''
     audio.say(u"perchè sono piu intelligente di te" )
  elif text == u"Ciao":
     audio.say(u"ciao, come stai?")
  elif text == u"Io bene e tu":
     batteriast()
  elif text == u"Io bene":
     batteriast()
  elif text == u"Io male":
     batteriast()
  elif text == u"Bene":
     batteriast()
  elif text == u"Male":
     batteriast()
  elif text == u"Imei":
     p = sysinfo.imei()
     audio.say(p)
     appuifw.note(u"il tuo imei e' %s" %p,"info")
  elif text == u"Esci":
     audio.say(u"ciao alla prossima")
     d=2
     quit()
  else:
     audio.say(text)

Link to comment
Condividi su altri siti

Please sign in to comment

You will be able to leave a comment after signing in



Accedi Ora
 Share

×
×
  • Crea Nuovo...

Informazione Importante

Questo sito utilizza i cookie per analisi, contenuti personalizzati e pubblicità. Continuando la navigazione, accetti l'utilizzo dei cookie da parte nostra | Privacy Policy