Извечная проблема lazarus кириллица и юникод

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Re: Извечная проблема lazarus кириллица и юникод

Сообщение Максим » 12.07.2010 23:21:00

Проверяйте кодировку всех строк, конкатенацию которых вы производите. В вашем случае она должна быть UTF8.
Аватара пользователя
Максим
энтузиаст
 
Сообщения: 597
Зарегистрирован: 27.07.2007 01:51:43
Откуда: Москва

Re: Извечная проблема lazarus кириллица и юникод

Сообщение Apromix » 22.10.2010 12:09:36

В Windows у меня значение ParamStr(0) отображается знаками вопросов (текст "Новая папка"):
laz0003472916.png

Как с этим бороться?
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Apromix
новенький
 
Сообщения: 28
Зарегистрирован: 06.10.2010 15:15:51
Откуда: Черновцы, Украина

Re: Извечная проблема lazarus кириллица и юникод

Сообщение GAMER » 22.10.2010 12:12:05

SysToUTF8
Аватара пользователя
GAMER
энтузиаст
 
Сообщения: 627
Зарегистрирован: 06.08.2008 13:41:07
Откуда: Ужгород-Днепр, Украина

Re: Извечная проблема lazarus кириллица и юникод

Сообщение Apromix » 22.10.2010 12:23:59

Спасибо. Еще вопрос. Вот код:

Код: Выделить всё
  SL := TStringList.Create;
  SL.LoadFromFile(Path + 'file_utf-8.txt');
  ShowMessage(SL[0]);
  SL.Free;


Вот что получаю (квадратик вначале)...
laz000347244578.png


Как правильно?
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Apromix
новенький
 
Сообщения: 28
Зарегистрирован: 06.10.2010 15:15:51
Откуда: Черновцы, Украина

Re: Извечная проблема lazarus кириллица и юникод

Сообщение GAMER » 22.10.2010 12:25:06

SL.Strings[0]
Аватара пользователя
GAMER
энтузиаст
 
Сообщения: 627
Зарегистрирован: 06.08.2008 13:41:07
Откуда: Ужгород-Днепр, Украина

Re: Извечная проблема lazarus кириллица и юникод

Сообщение Apromix » 22.10.2010 12:27:27

Это не то! Что SL[0], что SL.Strings[0] - результат один. Strings по-моему стоит default.
Apromix
новенький
 
Сообщения: 28
Зарегистрирован: 06.10.2010 15:15:51
Откуда: Черновцы, Украина

Re: Извечная проблема lazarus кириллица и юникод

Сообщение GAMER » 22.10.2010 12:32:07

А что внутри файла?
Аватара пользователя
GAMER
энтузиаст
 
Сообщения: 627
Зарегистрирован: 06.08.2008 13:41:07
Откуда: Ужгород-Днепр, Украина

Re: Извечная проблема lazarus кириллица и юникод

Сообщение Apromix » 22.10.2010 12:34:56

В кодировке UTF-8:

Код: Выделить всё
Строка 1
Строка 2
Строка 3
Apromix
новенький
 
Сообщения: 28
Зарегистрирован: 06.10.2010 15:15:51
Откуда: Черновцы, Украина

Re: Извечная проблема lazarus кириллица и юникод

Сообщение Mr.Smart » 22.10.2010 12:40:15

что выведет конструкция вида:
Код: Выделить всё
ShowMessage(IntToHex(Ord(SL[0][1]),2));

?
Mr.Smart
долгожитель
 
Сообщения: 1796
Зарегистрирован: 29.03.2008 01:01:11
Откуда: из леса!

Re: Извечная проблема lazarus кириллица и юникод

Сообщение Apromix » 22.10.2010 12:44:52

Вотъ:

laz379804.png


Добавлено спустя 21 минуту 19 секунд:
Ага, разобрался :) Первый знак - сигнатура юникода. Она может быть или не быть. При сохранении в редакторе можно поставить соответ. птичку. Я правильно понимаю? Она позволяет узнать, является ли файл utf8?
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Apromix
новенький
 
Сообщения: 28
Зарегистрирован: 06.10.2010 15:15:51
Откуда: Черновцы, Украина

Re: Извечная проблема lazarus кириллица и юникод

Сообщение Mr.Smart » 22.10.2010 13:13:05

Всё ясно. У вас в файле содержится так называемая BOM метку.
Mr.Smart
долгожитель
 
Сообщения: 1796
Зарегистрирован: 29.03.2008 01:01:11
Откуда: из леса!

Re: Извечная проблема lazarus кириллица и юникод

Сообщение Apromix » 22.10.2010 13:25:26

Да, вот еще код, который определяет ее наличие и удаляет, если сигнатура есть.

Код: Выделить всё
  if (Copy(SL[0], 1, 3) = #239#187#191) then
  begin
    Tmp := SL[0];
    Delete(Tmp, 1, 3);
    SL[0] := Tmp;
  end;
Apromix
новенький
 
Сообщения: 28
Зарегистрирован: 06.10.2010 15:15:51
Откуда: Черновцы, Украина

Пред.

Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 33

Рейтинг@Mail.ru