How about using "dn = str(Header(uvia, lcs))" instead of "dn = str(Header(uvia, 'utf-8'))" ?
As variable uvia is always unicode, there is no afraid to be mistaken encodings. Header() treats charset parameter only for a hint, so it uses 'utf-8' as the fall back if it fail to encode to lcs.
test case 1.
list's language : fr (iso-8859-1)
sender's language : fr (iso-8859-1)
sender's display name : =?iso-8859-1?q?G=E9n=E9rales?=
(results)
From: =?iso-8859-1?q?G=E9n=E9rales_via_Mailman-test?= <...>
test case 2.
list's language : ja (euc-jp, out going messages are encoded to iso-2022-jp)
sender's language : ja (euc-jp, out going messages are encoded to iso-2022-jp)
sender's display name : =?ISO-2022-JP?B?GyRCRnNMWkx3P04bKEI=?=
(results)
From: =?iso-2022-jp?b?GyRCRnNMWkx3P04bKEIgKE1haWxtYW4tdGVzdCAbJEI3UE0zGyhCKQ==?= <...>
test case 3.
list's language : en (us-ascii)
sender's language : en (us-ascii)
sender's display name : Yasuhito FUTATSUKI
(results)
From: Yasuhito FUTATSUKI via Mailman-test <...>
test case 4.
list's language : fr (iso-8859-1)
sender's language : ja (euc-jp, out going messages are encoded to iso-2022-jp)
sender's display name : =?UTF-8?B?5LqM5pyoIOmdluS7gQ==?=
(results)
From: =?utf-8?b?5LqM5pyoIOmdluS7gSB2aWEgTWFpbG1hbi10ZXN0?= <...>
How about using "dn = str(Header(uvia, lcs))" instead of "dn = str(Header(uvia, 'utf-8'))" ?
As variable uvia is always unicode, there is no afraid to be mistaken encodings. Header() treats charset parameter only for a hint, so it uses 'utf-8' as the fall back if it fail to encode to lcs.
test case 1. 1?q?G=E9n= E9rales? = 1?q?G=E9n= E9rales_ via_Mailman- test?= <...>
list's language : fr (iso-8859-1)
sender's language : fr (iso-8859-1)
sender's display name : =?iso-8859-
(results)
From: =?iso-8859-
test case 2. JP?B?GyRCRnNMWk x3P04bKEI= ?= jp?b?GyRCRnNMWk x3P04bKEIgKE1ha WxtYW4tdGVzdCAb JEI3UE0zGyhCKQ= =?= <...>
list's language : ja (euc-jp, out going messages are encoded to iso-2022-jp)
sender's language : ja (euc-jp, out going messages are encoded to iso-2022-jp)
sender's display name : =?ISO-2022-
(results)
From: =?iso-2022-
test case 3.
list's language : en (us-ascii)
sender's language : en (us-ascii)
sender's display name : Yasuhito FUTATSUKI
(results)
From: Yasuhito FUTATSUKI via Mailman-test <...>
test case 4. B?5LqM5pyoIOmdl uS7gQ== ?= b?5LqM5pyoIOmdl uS7gSB2aWEgTWFp bG1hbi10ZXN0? = <...>
list's language : fr (iso-8859-1)
sender's language : ja (euc-jp, out going messages are encoded to iso-2022-jp)
sender's display name : =?UTF-8?
(results)
From: =?utf-8?
in all of above, it looks fine.