My post Change to Unicode Encoding for Unicode 5.0 conformance now applies to .Net 2.0 with MS07-040 applied. Updates include a list of known issues, please see the list of known issues for MS07-040 described in KB 931212 for more information. KB 940521 describes this behavior in pandrticular. This fix reduces the chance of spoofing similar strings. Unicode 5.0 specifies this change due to security concerns regarding spoofing.
As mentioned in the KB:
Before this change, invalid characters in the middle of text strings would only be silently removed. For example, the string "Ad\xD800min\xDC00istrator" would change to "Administrator" as the Unicode characters U+D800 and U+DC00 are invalid . This could cause a security problem for some programs. After you install the security update MS07-040, this string would now become "Ad\xFFFDmin\xFFFDistrator", and decode to "Ad�min�istrator" where the � is the Unicode replacement character.
The first time we introduced this behavior was in Vista, and since then I've received several reports of issues with the new behavior. In nearly all of those cases there were usually some flawed assumptions contributing to the problems. Some examples were:
Note that before the update .Net 2.0 on Vista and .Net 2.0 RTM had different Unicode decoding behavior. With the update applied they have the same behavior.
Hope this is helpful,
Shawn