Strings should be normalized to uppercase. There is a small group of characters that when converted to lowercase cannot make a round trip. To make a round trip means to send the characters from one locale to another one that represents of character data differently, and retrieve it without loss.
Change operations that convert strings to lowercase so that the strings are converted to uppercase instead. For example, change String.ToLower(CultureInfo.InvariantCulture) to String.ToUpper(CultureInfo.InvariantCulture).