For me, using python2 instead of python3 solved the problem. I tried to load a pkl file from a public research dataset.
Error in python 3:
fbobee@server:~/WESAD/S10$ python3
Python 3.5.2 (default, Nov 12 2018, 13:43:14)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import pickle
>>> with open('S10.pkl', 'rb') as f:
... data = pickle.load(f)
...
Traceback (most recent call last):
File "<stdin>", line 2, in <module>
UnicodeDecodeError: 'ascii' codec can't decode byte 0xf2 in position 6: ordinal not in range(128)
Success in python 2:
fbobee@server:~/WESAD/S10$ python
Python 2.7.12 (default, Nov 12 2018, 14:36:49)
[GCC 5.4.0 20160609] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import pickle
>>> with open('S10.pkl', 'rb') as f:
... data = pickle.load(f)
...
>>> data.keys()
['signal', 'subject', 'label']
I didn't find anything exotic in the data, it contains a few strings (english letters only) and numbers. Documentation says that pickle is backward compatible. Maybe it has connection to the new text model of python 3.