dabear Skrevet 23. desember 2005 Del Skrevet 23. desember 2005 (endret) Heisann, holder på å lage meg noen python-xchat scripts, men har kommet over en unicodefeil som jeg ikke får vekk. Stringen må være i unicode, ettersom jeg bruker googleapien. søkestrengen blir henta fra msg.strip().split(' ')[1:]. try: asks = ''.join([x for x in msg.strip().split(' ')[1:]]) query = unicode(asks, 'latin-1') except Exception, e: channelWrite('google search kommando uten en søkestring detektert!') print 'Feil skjedde:\n\n%s\nqueryet: %s\n' % (e, asks) else: import SOAPpy as SOAP #... koden funker, men jeg får denne feilen om søkestrengen inneholder æ,ø eller å. Hvordan skal jeg fikse dette? google search kommando uten en søkestring detektert! Feil skjedde: 'ascii' codec can't decode byte 0xc3 in position 2: ordinal not in range(128) queryet: ssæ Endret 23. desember 2005 av dabear Lenke til kommentar
dabear Skrevet 4. januar 2006 Forfatter Del Skrevet 4. januar 2006 Heisann, ingen som kan hjelpe? Det viser seg at det er konverteringa til utf-8 som er problemet. asks = ' '.join([x for x in msg.strip().split(' ')[1:]]).encode('utf-8') Dersom msg inneholder ø,æ eller å, får jeg altså feilen «'ascii' codec can't decode byte 0xc3 in position 0: ordinal not in range(128) queryet» Lenke til kommentar
Jankee Skrevet 9. januar 2006 Del Skrevet 9. januar 2006 Sliter veldig mykje med det same. SOAPpy har ein klasse som heiter Types.py, i return til def _marshalData(self) return str(self._data) viss du setter det til unicode istandefor str så skal den takle det bedre. problemet for meg er at den omsetter ein norsk Å til to andre tegn og soap-kallet går i dass likevel. Lenke til kommentar
dabear Skrevet 9. januar 2006 Forfatter Del Skrevet 9. januar 2006 Heisann, løste det på følgende måte: def google(msg): asks = '' query = '' msg = msg.decode('utf-8') try: asks = u' '.join([x for x in msg.strip().split(' ')[1:]] ) query = asks except Exception, e: channelWrite('google search kommando uten en søkestring detektert!') print 'Feil skjedde:\n\n%s\nqueryet: %s\n' % (e, asks) else: import SOAPpy as SOAP #-t-o-d-o-: detect define: & similar = no url & throws exception google = SOAP.SOAPProxy('http://api.google.com/search/beta2', namespace='urn:GoogleSearch') #this one is mine, please change.. googleKey = u'KJcb8flQFHKQ9R12mI0KLJSYkb6vk1i5' try: results = google.doGoogleSearch(googleKey, query, 0, 10,\ SOAP.booleanType(0), u'', SOAP.booleanType(0), u'', u'', u'') except: #couldn't do query channelWrite('Kunne ikke gjennomføre googlesøk, prøv igjen seinere') return try: totalResults = str(results.estimatedTotalResultsCount) time = results.searchTime firstURL = results.resultElements[0].URL # print first result and number of matches reply = u'Googlesøket etter %s ga %s resutat. Første link er %s' % (query, totalResults, firstURL) except: reply = u'Kunne ikke søke etter %s, ikke et gyldig søk' % query reply = reply.encode("utf-8") channelWrite(reply) Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå