Плавали, знаем. Долго видел на BCB6, а потом преобразовывал ANSI → UTF-16.
1. Раз у нас UTF-16, придётся усложнить работу с путями и прочим (например, сокращение строк). Раньше символ был один char, стало — один-два WideChar.
2. Где у нас низкоуровневые строки — придётся корректировать объёмы памяти. На всех языках, кроме Си и Си++, такого обычно мало: на Си нет своих строк, а в Си++ автодеструкторы.
3. Где у нас сериализация — придётся перекодировать. В ANSI адресуемая единица (байт) совпадает с символом текста, в Юникоде уже нет.