I know how to decode a base64 string and decode a UTF-8 string. The string I have has some other type of problem.
I have a web app sending a parameter value as a URL encoded Base64 encoded someting encoded string which I'm struggling to decode to string.
Here's the orignal value I8PhvhSPMM23ie9C0mNJoA%3D%3D
Removed URL encoding it look like normal base64 I8PhvhSPMM23ie9C0mNJoA==
When I try and decode it, I get struck. Normal base64 decoding looks like this
>>> _string = "I8PhvhSPMM23ie9C0mNJoA=="
>>> _decoded = base64.b64decode(_string)
>>> _decoded
b'#\xc3\xe1\xbe\x14\x8f0\xcd\xb7\x89\xefB\xd2cI\xa0'
When I run this decoded byte string through .decode() I get the below. I tried UTF-8 and Latin-1.
>>> print(_decoded.decode('utf-8'))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc3 in position 1: invalid continuation byte
>>> print(_decoded.decode('latin-1'))
#Ãá¾0Í·ïBÒcI
>>>
I'm trying to decode the value.
Any help would be appreciated.
Related
I have an encoded string, payload, of a request that I want to uncompress.
payload = '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'
My process / goal is explained here. However, I want to stay with Python.
First, I believe I need to decompose the data. With the help of this answer I write:
import base64
payload_in_bytes = base64.b64decode(payload)
Next, I assume that the end-result is a dictionary so I use json.loads() as the documentation states it accepts bytes.
import json
data = json.loads(payload_in_bytes)
However, this results in a UnicodeDecodeError:
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x8b in position
1: invalid start byte
What am I doing wrong?
Here is a possible solution using gzip()
import base64
import gzip
import json
payload = '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'
binary_string = base64.b64decode(payload)
decomp_data = gzip.decompress(binary_string).decode()
data = json.loads(decomp_data)
print(data)
I am trying to get and parse a webpage that contains non-ASCII characters (the URL is http://www.one.co.il). This is what I have:
url = "http://www.one.co.il"
req = urllib2.Request(url)
response = urllib2.urlopen(req)
encoding = response.headers.getparam('charset') # windows-1255
html = response.read() # The length of this is valid - about 31000-32000,
# but printing the first characters shows garbage -
# '\x1f\x8b\x08\x00\x00\x00\x00\x00', instead of
# '<!DOCTYPE'
html_decoded = html.decode(encoding)
The last line gives me an exception:
File "C:/Users/....\WebGetter.py", line 16, in get_page
html_decoded = html.decode(encoding)
File "C:\Python27\lib\encodings\cp1255.py", line 15, in decode
return codecs.charmap_decode(input,errors,decoding_table)
UnicodeDecodeError: 'charmap' codec can't decode byte 0xdb in position 14: character maps to <undefined>
I tried looking at other related questions such as urllib2 read to Unicode and How to handle response encoding from urllib.request.urlopen() , but didn't find anything helpful about this.
Can someone please shed some light and guide me in this subject? Thanks!
0x1f 0x8b 0x08 is the magic number for a gzipped file. You will need to decompress it before you can use the contents.
I am web-scraping with Python using BeautifulSoap
I am getting this error
'charmap' codec can't encode character '\xae' in position 69: character maps to <undefined>
when scraping a webpage
This is my Python
hotel = BeautifulSoup(state.)
print (hotel.select("div.details.cf span.hotel-name a"))
# Tried: print (hotel.select("div.details.cf span.hotel-name a")).encode('utf-8')
We usually encounter this problem here when we are trying to .encode() an already encoded byte string. So you might try to decode it first as in
html = urllib.urlopen(link).read()
unicode_str = html.decode(<source encoding>)
encoded_str = unicode_str.encode("utf8")
As an example:
html = '\xae'
encoded_str = html.encode("utf8")
Fails with
UnicodeDecodeError: 'ascii' codec can't decode byte 0xa0 in position 0: ordinal not in range(128)
While:
html = '\xae'
decoded_str = html.decode("windows-1252")
encoded_str = decoded_str.encode("utf8")
print encoded_str
®
Succeeds without error. Do note that "windows-1252" is something I used as an example. I got this from chardet and it had 0.5 confidence that it is right! (well, as given with a 1-character-length string, what do you expect) You should change that to the encoding of the byte string returned from .urlopen().read() to what applies to the content you retrieved.
I have:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from urllib2 import urlopen
page2 = urlopen('http://pogoda.yandex.ru/moscow/').read().decode('utf-8')
page = urlopen('http://yasko.by/').read().decode('utf-8')
And in line "page ..." I have error "UnicodeDecodeError: 'utf8' codec can't decode byte 0xc3 in position 32: invalid continuation byte", but in line "page2 ..." th error is not, why?
From a position of 32 in yasko.by starts Cyrillic symbols, how I get it correctly?
Thanks!
The content of http://yasko.by/ is encoded with windows-1251, while the content of http://pogoda.yandex.ru/moscow/ is encoded with utf-8.
page = .. line should become:
page = urlopen('http://yasko.by/').read().decode('windows-1251')
I am using urlfetch to fetch a URL. When I try to send it to html2text function (strips off all HTML tags), I get the following message:
UnicodeEncodeError: 'charmap' codec can't encode characters in position ... character maps to <undefined>
I've been trying to process encode('UTF-8','ignore') on the string but I keep getting this error.
Any ideas?
Thanks,
Joel
Some Code:
result = urlfetch.fetch(url="http://www.google.com")
html2text(result.content.encode('utf-8', 'ignore'))
And the error message:
File "C:\Python26\lib\encodings\cp1252.py", line 12, in encode
return codecs.charmap_encode(input,errors,encoding_table)
UnicodeEncodeError: 'charmap' codec can't encode characters in position 159-165: character maps to <undefined>
You need to decode the data you fetched first! With which codec? Depends on the website you fetch.
When you have unicode and try to encode it with some_unicode.encode('utf-8', 'ignore') i can't image how it could throw an error.
Ok what you need to do:
result = fetch('http://google.com')
content_type = result.headers['Content-Type'] # figure out what you just fetched
ctype, charset = content_type.split(';')
encoding = charset[len(' charset='):] # get the encoding
print encoding # ie ISO-8859-1
utext = result.content.decode(encoding) # now you have unicode
text = utext.encode('utf8', 'ignore') # encode to uft8
This is not really robust but it should show you the way.