0 / 0 / 0
Регистрация: 28.08.2014
Сообщений: 16
1

Файл в кодировке ANSI

02.04.2016, 12:30. Показов 6278. Ответов 4

Студворк — интернет-сервис помощи студентам
Лазарус работает с UFT8 и файлы, которые сохраняются через TStringList или TextFile так же имеют кодировку UTF8.
Необходимо:
  1. открыть файл "1.txt"(utf8) и сохранить его в файл "2.txt"(ansi).
  2. открыть файл "2.txt"(ansi) и добавить строку String в кодировке Ansi не нарушая кодировку файла.
1й пример кода, вариант "консольный":
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
var
   St8: UTF8String;
   St: String;
   t0, t2: TextFile;
begin
         AssignFile( t0, '2.txt' );
         rewrite( t0 );
         AssignFile( t2, '1.txt' );
         reset( t2 );
         while not EOF( t2 ) do begin
               ReadLn( t2, St8 );
               St:= Utf8ToAnsi( St8 );
               WriteLn( t0, St );
         end;
         CloseFile( t2 );
end;
2й пример кода, вариант "компонентный"
Delphi
1
2
3
4
5
6
7
8
var
   List: TStringList;
   St: String;
begin
         List.LoadFromFile( '2.txt' );
         List.Add( Utf8ToAnsi(st) );
         List.SaveToFile( '2.txt' );
end;
оба варианта не работают.

Добавлено через 2 минуты
Принимаются любая конструктивная критика.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.04.2016, 12:30
Ответы с готовыми решениями:

считать посимвольно txt файл в ANSi кодировке
Всем привет! Понимаю, что наверное вопрос о считывании посимвольно txt файлов уже обсуждался и...

Как создать файл в кодировке ANSI
Как создать файл в кодировке ANSI ? Не нужно задавать свои вопросы в чужих темах

Как правильно считать/записать файл в ANSI кодировке?
Есть текстовой файл с ANSI кодировкой, английскими и русскими словами. Хочу в консольном...

Чтение данных из Excel в файл csv в кодировке ANSI
Добрый день, Форумчане. Есть ли у кого инфа как сохранять данные считываемые из экселя в файл csv...

4
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32762 / 21107 / 8139
Регистрация: 22.10.2011
Сообщений: 36,362
Записей в блоге: 8
02.04.2016, 14:08 2
Лучший ответ Сообщение было отмечено Grom13 как решение

Решение

Цитата Сообщение от Grom13 Посмотреть сообщение
файлы, которые сохраняются через TStringList или TextFile так же имеют кодировку UTF8
Ничего подобного. TStringList не меняет кодировку при сохранении. Если в него прочитать данные в 1251, то он и перезапишет потом в файл данные в той же кодировке.

Цитата Сообщение от Grom13 Посмотреть сообщение
2й пример кода, вариант "компонентный"
Прекрасно работает вот в таком виде:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
var
  List: TStringList;
  St: string;
begin
  st := 'тест'; // это в UTF8
  List := TStringList.Create;
  List.LoadFromFile('2.txt');
  // можешь и с Utf8ToAnsi попробовать, если у тебя системная кодировка совпадает с кодировкой файла.
  // У меня - не совпадает, поэтому приходится указывать явно.
  List.Add(UTF8ToCP1251(st)); // uses LConvEncoding
  List.SaveToFile('2.txt');
  List.Free;
end;
1
0 / 0 / 0
Регистрация: 28.08.2014
Сообщений: 16
02.04.2016, 15:16  [ТС] 3
volvo, странно, но данный вариант рассматривался.
Раскомментировал, указанный тобой код, скомпилировал, и все работает... я .
как узнать, Utf8ToAnsi или UTF8ToCP1251 необходимо использовать?(пока по плану использовать на xp/7/8) у меня так же сработала функция UTF8ToCP1251.
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32762 / 21107 / 8139
Регистрация: 22.10.2011
Сообщений: 36,362
Записей в блоге: 8
02.04.2016, 15:27 4
Цитата Сообщение от Grom13 Посмотреть сообщение
как узнать, Utf8ToAnsi или UTF8ToCP1251 необходимо использовать?
Если есть уверенность, что кодировка файла совпадает с кодировкой Non-unicode приложений (с той, что выставлена в Control Panel -> Region and Language -> Administrative), то имеет смысл использовать Utf8ToAnsi. Иначе нужно конвертировать текст из UTF8 в конкретную кодировку при помощи функций UTF8ToCP<...> модуля LConvEncoding.
0
0 / 0 / 0
Регистрация: 28.08.2014
Сообщений: 16
02.04.2016, 15:41  [ТС] 5
volvo, Спасибо, вопрос исчерпан. Последнее сообщение дало пищу для раздумий.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.04.2016, 15:41
Помогаю со студенческими работами здесь

Создание dbf-файла dBASE III с использованием JetOleDB4: на одном из ПК файл создается в кодировке ANSI
Здравствуйте. Возникла у меня интересная проблема: Программно создаю dbf файл dBASE III...

Чтение файлов в кодировке ANSI
Собственно, файл в родной кодировке не воспринимается, приходиться конвертировать кодировку в...

Проверка значений по кодировке ANSI
Привет всем! Появилась такая необходимость, сверять поступающие hex данные с кодировкой ANSI и...

Запись текстового (.txt) в кодировке ANSI
Помогите пожалуйста сохранять .txt из UTF-8 в ANCI OpenFileDialog o = new OpenFileDialog();...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru