Чтение текстовых файлов в кодирвке не UTF8

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

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

Re: Чтение текстовых файлов в кодирвке не UTF8

Сообщение MysticCoder » 16.07.2016 16:37:21

Лекс Айрин писал(а):MysticCoder, и что в этом хорошего?

Из-за всего этого приходится делать кучу лишних телодвижений, ибо некоторым прогам глубоко положить какую там кодировку система решила поставить. И ее собственная настраивается отдельно.

И такая хрень бывает, что в линуксе, что в винде. (ибычно, глючит в терминальном режиме)


Вообще то это для удобства сделано, вот вводит пользователь в твою прогу текст, и независимо от того какая у него система, где он находится и какую кодировку использует твоя программа вызывает AnsiToUtf8 и работает с этим текстом в формате utf-8 как хочет. Обработала этот текст, надо ей выдать его пользователю - вызывает Utf8ToAnsi и выдает текст пользователю в его любимой кодировке. И не важно, что за это кодировка - хоть пиктограммы пещерные.
MysticCoder
постоялец
 
Сообщения: 154
Зарегистрирован: 14.09.2013 00:20:28

Re: Чтение текстовых файлов в кодирвке не UTF8

Сообщение Лекс Айрин » 16.07.2016 16:53:25

MysticCoder, это все, конечно, хорошо... если бы не три но:
1) она ( AnsiToUtf8) НЕ работает правильно.
2) Есть SysToUtf8, которая как раз и ответственна за преобразование из системной в пользовательскую кодировки.
3) какую из двух кодировок считать системной -- консольную или гуишную? Если исходить из принципов построения ОС, то для никсов это как раз таки консольная. Хотя вроде бы в никсах сейчас системной считается UTF8...
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: Чтение текстовых файлов в кодирвке не UTF8

Сообщение MysticCoder » 16.07.2016 17:16:01

Лекс Айрин писал(а):1) она ( AnsiToUtf8) НЕ работает правильно.


Есть пример неправильного поведения? И под какой осью?
MysticCoder
постоялец
 
Сообщения: 154
Зарегистрирован: 14.09.2013 00:20:28

Re: Чтение текстовых файлов в кодирвке не UTF8

Сообщение SSerge » 16.07.2016 17:39:09

MysticCoder писал(а):Есть пример неправильного поведения? И под какой осью?


Есть вполне официальное заявление, что под версиями lazarus (а это все поздние, с компилятором 3х), для которых включена кодовая страница по умолчанию utf8, эта функция не действует по очевидным причинам - незачем переводить utf8 в utf8.
SSerge
энтузиаст
 
Сообщения: 971
Зарегистрирован: 12.01.2012 05:34:14
Откуда: Барнаул

Re: Чтение текстовых файлов в кодирвке не UTF8

Сообщение Лекс Айрин » 16.07.2016 17:43:33

MysticCoderА тему перечитать слабо?

Я не помню как под линуксом, но под виндой она у меня никогда не срабатывала.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: Чтение текстовых файлов в кодирвке не UTF8

Сообщение MysticCoder » 16.07.2016 18:19:12

Лекс Айрин писал(а):MysticCoderА тему перечитать слабо?


Перечитал, не нашел ни одного примера.
MysticCoder
постоялец
 
Сообщения: 154
Зарегистрирован: 14.09.2013 00:20:28

Re: Чтение текстовых файлов в кодирвке не UTF8

Сообщение Лекс Айрин » 16.07.2016 18:28:10

MysticCoder А если найду?

viewtopic.php?p=99756#p99756, viewtopic.php?p=99746#p99746 другое дело, что человек не дал код, но для этого вопроса он обычно не сильно нужен. Тут хватает штатной телепатии.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: Чтение текстовых файлов в кодирвке не UTF8

Сообщение MysticCoder » 16.07.2016 18:53:41

Лекс Айрин писал(а):MysticCoder А если найду?

viewtopic.php?p=99756#p99756, viewtopic.php?p=99746#p99746 другое дело, что человек не дал код, но для этого вопроса он обычно не сильно нужен. Тут хватает штатной телепатии.


Вооот... кода - нет, файлов - нет, т.е. конкретики никакой, каждый штатный телепат свою версию нателепатит, а в реале может оказаться, что человек под словом ANSI подразумевал ASCII, под юникодом - только utf-8 и прочее и прочее.
MysticCoder
постоялец
 
Сообщения: 154
Зарегистрирован: 14.09.2013 00:20:28

Re: Чтение текстовых файлов в кодирвке не UTF8

Сообщение pupsik » 16.07.2016 19:34:18

MysticCoder эх.. Если прочитать: http://wiki.lazarus.freepascal.org/LCL_Unicode_Support то там да: описано использование данных функций из модуля FileUtil. Но..о, в связи с "кочеванием" команды лазаря данные функции не модифицируются. Поэтому, не только на этом форуме, можно наткнуться А...А... не работает.
Кочевание происходит в ютф8 поэтому большинство функций перекочевало в lazfileutil, lazutf8. Если уж слишком не верите, посмотрите конфу лазаря/фпс. Кажись там мелькало. Учитывая что функции из модуля lconvencoding будут поддерживаться (пока они поддерживаются) лучше использовать перекодирование из неё.
А все эти Sys..., по собственной шкуре, не работают адекватно.
Но..о, если вы считаете что нужно их использовать то....

Добавлено спустя 1 час 47 минут 27 секунд:
в догонку:
http://wiki.freepascal.org/Better_Unicode_Support_in_Lazarus/ru п.Совместимость с LCL в Lazarus 1.x
и оригинал: http://wiki.freepascal.org/Better_Unicode_Support_in_Lazarus#Helper_functions_for_CodePoints
Ну и точнее:
UTF8Decode, UTF8Encode - Almost all can be removed.
UTF8ToAnsi, AnsiToUTF8 - Almost all can be removed.
UTF8ToSys, SysToUTF8 - All can be removed. They are now dummy no-ops and only return their parameter.

п.с.
Но вики то не сильно официальное заявление. Просто к сведению :lol:
pupsik
энтузиаст
 
Сообщения: 1154
Зарегистрирован: 20.08.2014 16:20:13

Re: Чтение текстовых файлов в кодирвке не UTF8

Сообщение Лекс Айрин » 18.07.2016 10:46:01

MysticCoder писал(а): каждый штатный телепат свою версию нателепатит, а в реале может оказаться, что человек под словом ANSI подразумевал ASCII, под юникодом - только utf-8 и прочее и прочее.


Все это, конечно, так... но ведь человеку помощь пригодилась. Так что телепатия работает)))
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: Чтение текстовых файлов в кодирвке не UTF8

Сообщение Aleh » 02.02.2017 13:55:32

SSerge писал(а): "Основная кодировка DOS" cp1251


SSerge писал(а): а за консольную - "колхозный стандарт" cp866,

Вы ничего не перепутали? - там вроде наоборот.

Cp1251ToUtf8 и меня спасла.

Добавлено спустя 3 минуты 23 секунды:
Лекс Айрин писал(а):используй Cp1251ToUtf8 и будет тебе Щастье

Спасибо тебе добрый человек!
Aleh
новенький
 
Сообщения: 53
Зарегистрирован: 08.08.2016 12:27:45

Re: Чтение текстовых файлов в кодирвке не UTF8

Сообщение Лекс Айрин » 02.02.2017 15:25:20

Aleh писал(а):Вы ничего не перепутали? - там вроде наоборот.


Перепутали. CP866, собственно, и есть системная досовская кодировка. Колхозный стандарт -- это KOI8R.
CP1251 это win-кодировка и в досе я ее ни разу не видел.

Aleh писал(а):Спасибо тебе добрый человек!

Право не за что.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: Чтение текстовых файлов в кодирвке не UTF8

Сообщение mig-31 » 02.02.2017 17:58:50

В Linux системах уже очень давно системная кодировка UTF-8.
mig-31
постоялец
 
Сообщения: 224
Зарегистрирован: 14.07.2011 13:46:48

Re: Чтение текстовых файлов в кодирвке не UTF8

Сообщение Лекс Айрин » 02.02.2017 18:16:55

mig-31, позволь тебе не поверить.
В процессе настройки консоли той же убунты приходится устанавливать системную кодировку, иначе русский текст в ней не читаем... и это далеко не на UTF8... как сей факт вяжется с тем, что...
mig-31 писал(а):В Linux системах уже очень давно системная кодировка UTF-8.

Может, конечно, этот глюк давно исправили, я давно не работал в убунте, но сомнительно.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Пред.

Вернуться в Lazarus

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

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

Рейтинг@Mail.ru