EncodedString is the class used to store strings and their encoding. It behaves just like an ordinary string, with two exceptions:
Create a new EncodedString using the data in string and the encoding.
Return a copy of the string converted to encoding (if given).
[Validate]