After I did this, only the compile times changed in the messages.
The UnicodeString warnings all come from RichMemo. It explicitly uses UnicodeString as I initially assumed.
For example :
C:\development\components\svn\richmemo\richmemoutils.pas(133,52) Warning: (4105) Implicit string type conversion with potential data loss from "UnicodeString" to "AnsiString"
Line 133 says :
fs:= TFileStream.Create( UTF8Decode(FileNameUTF8), fmShareDenyNone or fmOpenRead);
You see, it calls this RTL function :
function UTF8Decode(const s : RawByteString): UnicodeString;
The code works but it does 2 useless conversions between UTF-8 and UTF-16. If you check the other warnings carefully, they also turn out to be valid. You can ask Dmitry 'skalogryz' Boyarintsev if he wants to add support for the "better" UTF-8 system into RichMemo.