Мне посчастливилось использовать UTF8ToAnsi для чтения и правильного отображения текстового файла UTF-8. Однако при импорте модуля Crt WriteLn начинает извергать неверные гиббери sh и псевдографику.
Допустим, наш ввод rosé, водка and ούζο█
, вывод будет ?rose, тюфър and ????-
(? В начале из-за UTF-8 с спецификацией). При удалении блока Crt выводится ?rose, водка and ????-
. Дело в том, что мне нужно, чтобы Crt делал такие вещи, как ClrScr.
Код, который я использую:
var
openFile: TextFile;
fileString: widestring;
begin
Assign(openFile, 'UTF8.txt');
Reset(openFile);
fileString := '';
ReadLn(openFile, fileString);
Close(openFile);
fileString := UTF8ToAnsi(fileString);
WriteLn(fileString);
ReadLn;
end.
Больше всего меня интересует отображение текста в консоли (Windows 7), и это то, что терпит неудачу, потому что при подключении к выходному файлу он пишет почти то же самое, что отображалось без Crt.
Я уже пробовал SetConsoleOutputCP(CP_UTF8)
, который без Crt дал понять даже меньше символов (CP_UTF16, который предположительно работает в Юникоде, хотя) и с помощью Crt просто сделали никакого эффекта вообще. Я пытался сделать эту работу слишком долго, и у меня почти нет идей.
Я использую Free Pascal и не могу импортировать классы (вес 200 КБ) из-за по причинам совместимости.