Your strings differ on Unicode Normalization (demonstrated merely for relevant characters):
Form String Unicode Length
---- ------ ------- ------
(raw) à à \u00e0 \u0061\u0300 4
FormC à à \u00e0 \u00e0 3
FormD à à \u0061\u0300 \u0061\u0300 5
FormKC à à \u00e0 \u00e0 3
FormKD à à \u0061\u0300 \u0061\u0300 5
The former string is
T (U+0054, Latin Capital Letter T)
h (U+0068, Latin Small Letter H)
à (U+00E0, Latin Small Letter A With Grave)
n (U+006E, Latin Small Letter N)
h (U+0068, Latin Small Letter H)
while the latter one is
T (U+0054, Latin Capital Letter T)
h (U+0068, Latin Small Letter H)
a (U+0061, Latin Small Letter A)
̀ (U+0300, Combining Grave Accent)
n (U+006E, Latin Small Letter N)
h (U+0068, Latin Small Letter H)
You invoke a mojibake case (example in Python for its universal intelligibility):
print('Thành\nThành'.encode('utf-8').decode('cp1252'))
Thà nh
Thành