Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / можно ли переменной типа TStringList задать кодировку / 10 сообщений из 10, страница 1 из 1
19.12.2019, 13:00
    #39905471
yemets63
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
можно ли переменной типа TStringList задать кодировку
в пересенной типа TStringList текст лежит правильно, сохраняю в большой String, теряю буувы, а точнее диакритические знаки

TStringList сохраняю в файл , просто SaveAs без указаний кодировок

потом загружаю из файла с указанием кодировки, допустим OEM OS Windows = GetOEMCP
сохраняю в большой String все знаки на месте.

как исключить работу с файлом, напрямую передать из TStringList в String чтобы кодировка осталась, или как конкретно указать String какая кодировка придет
...
Рейтинг: 0 / 0
19.12.2019, 13:03
    #39905480
alekcvp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
можно ли переменной типа TStringList задать кодировку
Версия Delph какая?

yemets63
как исключить работу с файлом, напрямую передать из TStringList в String чтобы кодировка осталась

Для Unicode дельфей:
Код: pascal
1.
StringValue := SomeStringList.Text;


yemets63
TStringList сохраняю в файл , просто SaveAs без указаний кодировок

2009 и старше по-умолчанию сохраняют в UTF-16LE (насчёт LE не уверен на 100%).
...
Рейтинг: 0 / 0
19.12.2019, 13:16
    #39905499
yemets63
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
можно ли переменной типа TStringList задать кодировку
alekcvp,

24-я Берлин

читаю из Windows OEM одировку, положить надо в базу, если через файл, всё прекрасно, пробовал напрямую, потеря букв
...
Рейтинг: 0 / 0
19.12.2019, 15:00
    #39905598
s62
s62
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
можно ли переменной типа TStringList задать кодировку
yemets63,

может вот так будет норм? (не уверен, но проверять или углубляться сейчас некогда)

Код: pascal
1.
2.
3.
4.
5.
6.
type 
  TCyrDosString = type AnsiString(866);

var s1: TCyrDosString;

s1 := StringList.Text;
...
Рейтинг: 0 / 0
19.12.2019, 15:08
    #39905607
alekcvp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
можно ли переменной типа TStringList задать кодировку
s62

может вот так будет норм? (не уверен, но проверять или углубляться сейчас некогда)

Код: pascal
1.
2.
3.
4.
5.
6.
type 
  TCyrDosString = type AnsiString(866);

var s1: TCyrDosString;

s1 := StringList.Text;



1. Только если у ТС "диакритические знаки", то страница не 866, скорее всего.
2. s1 := TCyrDosString(StringList.Text); - чтобы не ругался.
...
Рейтинг: 0 / 0
19.12.2019, 15:09
    #39905608
alekcvp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
можно ли переменной типа TStringList задать кодировку
yemets63
alekcvp,
читаю из Windows OEM одировку, положить надо в базу, если через файл, всё прекрасно, пробовал напрямую, потеря букв

А можно увидеть пару кусков кода, "вот так норм" и "вот так не норм"?..
...
Рейтинг: 0 / 0
19.12.2019, 15:24
    #39905623
yemets63
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
можно ли переменной типа TStringList задать кодировку
alekcvp,

кодировку закрыл, пока оставил через файл,
сохраняю что считал из Windows , потом читаю код страницы OEM из Windows и считываю сохраненный файл loadfromfile(filename, код OEM) и сохраняю в базу

попробую в понедельник, отпишусь в любом случае, так как хочу избавится от файлов и кодировать напрямую, сейчас нет машин с турецким и немецким, проверить не начем, а на обычной нашей кириллице с латиницей всё и так работает.
...
Рейтинг: 0 / 0
19.12.2019, 15:51
    #39905646
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
можно ли переменной типа TStringList задать кодировку
alekcvp
2009 и старше по-умолчанию сохраняют в UTF-16LE (насчёт LE не уверен на 100%).
В ANSI они сохраняют для Windows и в UTF-8 для других платформ
...
Рейтинг: 0 / 0
20.12.2019, 13:40
    #39906117
GunSmoker
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
можно ли переменной типа TStringList задать кодировку
yemets63
читаю из Windows OEM одировку, положить надо в базу, если через файл, всё прекрасно, пробовал напрямую, потеря букв


Есть мнение, что StringList тут вообще ни при чём. Проблема в "положить в базу".

1. StringList хранит в Unicode, т.е. все символы там хранятся без потерь. Не надо никаких кодировок указывать.
2. Потери могут быть когда из StringList вы чем-то во что-то переводите. Вот это "положить в базу" может быть этим "чем-то".
3. Ну или проблема когда в StringList вы данные вносите. Если из OEM файла в StringList загружаете - проблема может быть здесь.
...
Рейтинг: 0 / 0
20.12.2019, 16:02
    #39906220
alekcvp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
можно ли переменной типа TStringList задать кодировку
_Vasilisk_
alekcvp
2009 и старше по-умолчанию сохраняют в UTF-16LE (насчёт LE не уверен на 100%).
В ANSI они сохраняют для Windows и в UTF-8 для других платформ

Хм, да, точно. Можно вторым параметром указать в чём сохранять.
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / можно ли переменной типа TStringList задать кодировку / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]