Я работаю на Mac и скопировал ваш источник. Когда я его скомпилировал, он пожаловался, что (например) ’ä’
нужны двойные кавычки; намек на то, что источник использует широкие символы. Похоже, это в UTF-8 [1], поэтому я скомпилировал с -gnatW8
, что оказалось успешным.
Затем я запустил программу на копии собственного исходного текста, и не удалось преобразовать текст .
Компиляция с -gnatdg
, которая заставляет GNAT создавать представление своего внутреннего исходного дерева, я получаю
ada__text_io__get (source, source_char);
case source_char is
when '["e4"]' =>
ada__text_io__put__3 (target, "ä");
when '["c4"]' =>
ada__text_io__put__3 (target, "Ä");
, который выглядит так, как будто GNAT прочитал кодировку UTF-8 ä
и использовал версию Latin-1 для оператора case; не без оснований, учитывая, что в нем написано Character
, и этого вполне достаточно, чтобы объяснить, почему он не смог преобразовать себя.
Затем я попытался использовать Ada.Wide_Text_IO
и Wide_Character
. К сожалению, программа не удалась по той же причине, что и раньше. Можем ли мы смотреть на функцию? или даже ошибка?
[1] Возможно, файл попал в UTF-8 из-за того, что я его скачал, конечно же.