The line ```validchars = '-_.,() {0}{1}'.format(string.ascii_letters, string.digits)``` only checks the pattern string before filling in the metadata, so Unicode author names and titles should be ok, if I add a call to ```u()``` to the line that formats the pattern, like ```formatted = u(pattern).format(**d)```

The four ISBNs you named worked that way:

Campos_e.a._2011_Emergências obstétricas_9789727576807
Knuth_2008_The Art Of Computer Programming_9780321534965
O'Connor_2012_Violent Python A Cookbook For Hackers, Forensic Analysts, Penetration Testers And Security Engineers._9781597499644
海明威_2007_Lao ren yu hai_9787500117018 (the chinese shows correctly on the command line)