'String implementation see http://stackoverflow.com/a/17197027/6880819
Extended with Unicode support'

def get_strings(self, f, min=4):

    results = []
    result = ''
    counter = 1
    wide_word = False
    for c in f.data.decode('utf-8', 'ignore'):
        if ((counter == 2) and (c == '\x00')):
            wide_word = True
            counter += 1
            continue
        if (wide_word and (c == '\x00') and (not (counter % 2))):
            counter += 1
            continue
        if ((c in string.printable) and (c not in ['\n', '\r'])):
            result += c
            counter += 1
            continue
        if (len(result) >= min):
            results.append(result)
        result = ''
        counter = 1
        wide_word = False
    if (len(result) >= min):
        results.append(result)
    return results
