Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
Легион
3 / 3 / 1
Регистрация: 16.03.2016
Сообщений: 51
1

Кодировка файла UFT8 без BOM

12.08.2016, 08:54. Просмотров 951. Ответов 2
Метки нет (Все метки)

Кодировка файла UFT8 без BOM

Delphi
1
ONELIST:= TStringList.Create;
Delphi
1
ONELIST.LoadFromFile('C:\Users\Admin\Desktop\test.txt');
При WriteLn(ONELIST.Text); выводится текст как
Delphi
1
??????????????????????????????????????????????
, как можно задать кодировку UTF8 без BOM, нужно именно без BOM. Или же, присвоить файлу кодировку, а потом вывести?
Можете помочь? Спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.08.2016, 08:54
Ответы с готовыми решениями:

Кодировка файла в utf-8
Программа генерирует csv файл. Но нужно, что бы он был в utf-8. Так вот, просто...

Корректное открытие Dos файла (кодировка)?
Открываю Dos файл, передаю его в Memo. Русские буквы отображаются...

Как убрать квадрат (BOM)
в начале первой строки файла, то-есть не показывать его. Компонент обычный...

Кодировка UTF-8 без BOM
Никак не получаєтся сохранить php файл в колировке UTF-8. Тоисть если я...

Кодировка UTF-8 без BOM
В общем не совсем проблема, мелочь, НО бесячая мелочь! Adobe Dreamweaver СС...

2
qwertehok
2301 / 2205 / 602
Регистрация: 29.08.2013
Сообщений: 14,727
12.08.2016, 10:09 2
Delphi
1
procedure LoadFromFile(const FileName: string; Encoding: TEncoding); overload; virtual;
0
Mawrat
12827 / 5735 / 1700
Регистрация: 19.09.2009
Сообщений: 8,807
12.08.2016, 12:48 3
Вариант для любой версии Delphi. Текст UTF-8 может быть с меткой BOM или без неё.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
//Загрузка текста в кодировке UTF-8 из файла, преобразование кодировок
//UTF-8 -> UNICODE (UTF-16LE) (-> ANSI для Delphi 2007 и ниже) и загрузка в экземпляр типа TMemo.
//В файле может присутствовать или отсутствовать метка BOM - в программе это учитывается.
procedure TForm1.Button1Click(Sender: TObject);
var
  Od : TOpenDialog;
  Fs : TFileStream;
  S  : UTF8String;  //UTF8String = AnsiString.
begin
  //Диалог выбора файла.
  Od := OpenDialog1; //OpenDialog1 уже должен быть на форме.
  if Od.InitialDir = '' then
    Od.InitialDir := ExtractFilePath(ParamStr(0));
  if not Od.Execute then
    Exit;
  if not FileExists(Od.FileName) then
  begin
    MessageBox(Handle, 'Файл с заданным именем не найден! Действие отменено.',
      'Файл не найден!', MB_OK + MB_ICONEXCLAMATION + MB_APPLMODAL);
    Exit;
  end;
 
  //Загрузка данных из файла и их обработка.
  Fs := TFileStream.Create(Od.FileName, fmOpenRead + fmShareDenyWrite);
  try
    //Проверяем наличие метки BOM. Метка BOM: #$EF#$BB#$BF. Если она присутствует,
    //то указатель потока устанавливаем непосредственно справа от неё. Тем самым
    //исключаем метку из дальнейшей загрузки. В противном случае, если метка BOM
    //отсутствует, то возвращаем указатель потока на начало файла.
    SetString(S, PChar(#0#0#0), 3); //Размещаем строку в динамической памяти и задаём её содержимое: #0#0#0.
    if (Fs.Read(S[1], 3) < 3) or (S <> #$EF#$BB#$BF) then
      Fs.Position := 0;
 
    //Загрузка данных из файла
    SetLength(S, Fs.Size - Fs.Position); //(Fs.Size - Fs.Position) - длина строки за вычетом размера метки BOM.
    Fs.Read(S[1], Fs.Size); //Здесь написано Fs.Size вместо (Fs.Size - Fs.Position) - это тоже правильно.
 
    //Преобразование UTF-8 -> UNICODE (UTF-16LE) (-> ANSI для Delphi 2007 и ниже) и запись в Memo.
    //Подходит для любых версий Delphi. В ANSI версиях Delphi при присвоении строки типа
    //WideString переменной типа String (AnsiString), автоматически выполянется преобразование UNICODE -> ANSI.
    Memo1.Text := UTF8Decode(S);
  finally
    FreeAndNil(Fs);
  end;
end;
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.08.2016, 12:48

Определить кодировку файла (UTF8 без BOM)
Мужики, всем привет! Может кто занимался подобным, подскажите, как можно...

Записать в начало файла сигнатуру BOM (EF BB BF) UTF-8 с BOM
Всем привет. Ребята подскажите как это можно сделать? Я пробовал и так ...

utf8 без BOM
кодирую в утф 8 без бом - появляются кракозябры, как нормально перекодировать?...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru