Почему внутри программы все популярнее становятся строки UTF16, тогда как формат обмена данными UTF8? Например, в python3, delphi XE2, XE3 внутренние строки хранятся в UTF16. Ведь тогда лишнюю конвертацию данных надо проводить, когда на вход поступает UTF8, преобразуешь в UTF16, и то же самое делаешь на выходе - из UTF16 преобразуешь в UTF8.
Чем объясняется такая необходимость? Почему внутри строки в UTF16? Ведь проще сделать везде UTF8, и в форматах обмена и внутри.