LinuxForum.Fans
Тема

Нераспознаваемая кодировка

Автор: Gr_f 26 сообщений 3735 просмотров
#304016

Здравствуйте!
подскажите, пожалуйста, почему Текстовый редактор линукса не распознаёт кодировку ANSI и что можно сделать, чтоб он правильно её распознавал? у меня практически все текстовые файлы в этой кодировке, а Текстовый редактор вместо текста видит иероглифы...

#304017
"Gr@f" написал:
Текстовый редактор линукса

Это какой именно?
Дайте пример такого файла.

#304020

в смысле? пример программного файла Текстовый редактор или пример файла, который он не читает?

#304021

Текстовый редактор — это общее название программ для редактирования текста. Их много.
Да, и пример файла, который вызывает проблемы.

#304023

да я имел в виду дефолтный gedit версия 3.2.0
они все что в ANSI вызывают проблемы, не понимаю что вам даст, если я приведу пример этих иероглифов, которые он отображает?

#304024
"Gr@f" написал:
не понимаю что вам даст, если я приведу пример этих иероглифов, которые он отображает?

Хотя бы для того, чтобы знать, где проблема — в редакторе или файле.
Слабо верится, что в настройках gedit нет выбора кодировки.
В конце концов, если решать проблему «в лоб», можно все текстовые файлы переконвертировать в UTF ;)

#304028

"Gr@f" написал:
не распознаёт кодировку ANSI
А какую из ANSI кодировок он должен взять, cp1250, cp1251, cp1252, cp1253, cp1254, cp1255, cp1256, cp1257, cp1258? Вот вы ему руками и укажите (Файл - Открыть - Кодировка символов, или в командной строке: gedit --encoding=WINDOWS-1251 ...), какую вам надо. Список можно получить командой gedit --list-encodings
#304041
Lupo Alberto написал:
Хотя бы для того, чтобы знать, где проблема — в редакторе или файле.

в редакторе естественно, в тысячах файлов вряд ли может быть проблема

Lupo Alberto написал:
Слабо верится, что в настройках gedit нет выбора кодировки.

представьте себе, тока что проверял, да и при чём тут настройки, кодировки ведь находятся либо в папке с программой, либо где-то в системных файлах, поэтому при открытии файла она либо сразу используется, если есть, либо нет

Lupo Alberto написал:
В конце концов, если решать проблему «в лоб», можно все текстовые файлы переконвертировать в UTF ;)

ну зачем же утрировать, как будто мне больше делать нечего, как заниматься поиском и конвертированием нескольких тысяч файлов, да и потом ANSI меня вполне устраивает, по крайней мере на винде

bormant написал:
А какую из ANSI кодировок он должен взять, cp1250, cp1251, cp1252, cp1253, cp1254, cp1255, cp1256, cp1257, cp1258?

вы так говорите, как будто там есть такие кодировки, в основном там разные виды кириллических, одна западная и текущая локальная (UTF-8)

bormant написал:
Вот вы ему руками и укажите (Файл - Открыть - Кодировка символов, или в командной строке: gedit --encoding=WINDOWS-1251 ...), какую вам надо. Список можно получить командой gedit --list-encodings

там стоит Определённая автоматически, неужто программа не может правильно определить кодировку? если таковая конечно имеется, я ж не знаю какую именно надо выбирать, да и не хочется постоянно играться с выбором кодировки при открытии каждого файла, это ж морока

#304042
"Gr@f" написал:
в редакторе естественно, в тысячах вряд ли может быть проблема
"Gr@f" написал:
да и потом ANSI меня вполне устраивает, по крайней мере на винде

Windows некорректно (в реалиях *unix) обрабатывает переносы строк, так что возможны варианты.

"Gr@f" написал:
как будто мне больше делать нечего, как заниматься поиском и конвертированием нескольких тысяч файлов
text

find ~ -name "*.txt" -exec enca -x utf-8 {} \;
#304043

"Gr@f" написал:
вы так говорите, как будто там есть такие кодировки
вы так говорите, как будто там нет таких кодировок
text
$ gedit --list-encodings | grep 125
WINDOWS-1250
WINDOWS-1251
WINDOWS-1252
WINDOWS-1253
WINDOWS-1254
WINDOWS-1255
WINDOWS-1256
WINDOWS-1257
WINDOWS-1258

"Gr@f" написал:
неужто программа не может правильно определить кодировку?
ключевое слово выделено. Как правило, подобная эвристика строится на статистике паросочетаний и не является однозначной.
Тем не менее, исходники gedit открыты, можете дописать желаемое поведение (лично или нанять кого-либо).


ps. gedit-2.30.4/data/gedit.schemas.in

<schema>
<key>/schemas/apps/gedit-2/preferences/encodings/auto_detected</key>
<applyto>/apps/gedit-2/preferences/encodings/auto_detected</applyto>
<owner>gedit</owner>
<type>list</type>
<list_type>string</list_type>
<locale name="C">
<default><!-- Translators: This is the sorted list of encodings used by gedit
for automatic detection of the file encoding. You may want to customize it adding
encodings that are common in your country, for instance the GB18030 encoding
for the Chinese translation. You may also want to remove the ISO-8859-15 encoding
(covering English and most Western European languages) if you think people
in you country will rarely use it.
"CURRENT" is a magic value used by gedit and it represents the encoding
for the current locale, so please don't translate the "CURRENT" term.
Only recognized encodings are used.
See http://svn.gnome.org/viewcvs/gedit/trunk/gedit/gedit-encodings.c?view=markup for
a list of supported encodings -->[UTF-8,CURRENT,ISO-8859-15,UTF-16]</default>
<short>Automatically Detected Encodings</short>
<long>Sorted list of encodings used by gedit for automatically detecting the encoding of
a file. "CURRENT" represents the current locale encoding. Only recognized encodings are used.</long>
</locale>
</schema>
Может быть есть смысл поднастроить gedit?
#304046
Lupo Alberto написал:
Windows некорректно (в реалиях *unix) обрабатывает переносы строк, так что возможны варианты.

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

Lupo Alberto написал:
text
find ~ -name "*.txt" -exec enca -x utf-8 {} \;

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

bormant написал:
вы так говорите, как будто там нет таких кодировок
text
$ gedit --list-encodings | grep 125
WINDOWS-1250
WINDOWS-1251
WINDOWS-1252
WINDOWS-1253
WINDOWS-1254
WINDOWS-1255
WINDOWS-1256
WINDOWS-1257
WINDOWS-1258

вот какие там кодировки:



я уж не знаю как они должны по-другому называться

bormant написал:
[quote="Gr@f"]неужто программа не может правильно определить кодировку?
ключевое слово выделено. Как правило, подобная эвристика строится на статистике паросочетаний и не является однозначной.
Тем не менее, исходники gedit открыты, можете дописать желаемое поведение (лично или нанять кого-либо).[/quote]
знал бы как или было бы кого нанять, давно бы это сделал

bormant написал:
ps. gedit-2.30.4/data/gedit.schemas.in
[quote=bormant] <schema>
<key>/schemas/apps/gedit-2/preferences/encodings/auto_detected</key>
<applyto>/apps/gedit-2/preferences/encodings/auto_detected</applyto>
<owner>gedit</owner>
<type>list</type>
<list_type>string</list_type>
<locale name="C">
<default><!-- Translators: This is the sorted list of encodings used by gedit
for automatic detection of the file encoding. You may want to customize it adding
encodings that are common in your country, for instance the GB18030 encoding
for the Chinese translation. You may also want to remove the ISO-8859-15 encoding
(covering English and most Western European languages) if you think people
in you country will rarely use it.
"CURRENT" is a magic value used by gedit and it represents the encoding
for the current locale, so please don't translate the "CURRENT" term.
Only recognized encodings are used.
See http://svn.gnome.org/viewcvs/gedit/trunk/gedit/gedit-encodings.c?view=markup for
a list of supported encodings -->[UTF-8,CURRENT,ISO-8859-15,UTF-16]</default>
<short>Automatically Detected Encodings</short>
<long>Sorted list of encodings used by gedit for automatically detecting the encoding of
a file. "CURRENT" represents the current locale encoding. Only recognized encodings are used.</long>
</locale>
</schema>

Может быть есть смысл поднастроить gedit?[/quote]
наверное есть, тока надо знать что настраивать, а то как бы хуже не сделать, я ведь с линуксом поверхностно знаком

#304047
"Gr@f" написал:
лучше бы подсказали, как сделать, чтоб он правильно распознавал файлы читая их на ноуте с линуксом

Пока приходится только верить вам на слово.
Уж извините, но напоминает: «А-а-а, у меня ничего не работает!». Мои просьбы предоставить файл для проверки вы игнорируете. Право ваше.

#304057
text

$ echo $LANG
ru_RU.UTF-8
$ echo А роза упала на лапу Азора. | iconv -t cp1251 > test1251.txt
$ hexdump -C test1251.txt 
00000000  c0 20 f0 ee e7 e0 20 f3  ef e0 eb e0 20 ed e0 20  |. .... ..... .. |
00000010  eb e0 ef f3 20 c0 e7 ee  f0 e0 2e 0a              |.... .......|
0000001c
$ gedit test1251.txt &

Хм, замечательно определяет, WINDOWS-1251.

Slackware-14.0, x86_64, gedit-2.30.4.

ps. Возможно, из-за списка кодировок: "[UTF-8,CURRENT,WINDOWS-1251,KOI8R,ISO-8859-5]", в котором западноевропейская кодировка отсутствует.

pps. Добавил в список ISO-8859-15, переименовал файл, открыл -- всё равно WINDOWS-1251.

#304068
Lupo Alberto написал:
[quote="Gr@f"]лучше бы подсказали, как сделать, чтоб он правильно распознавал файлы читая их на ноуте с линуксом

Пока приходится только верить вам на слово.
Уж извините, но напоминает: «А-а-а, у меня ничего не работает!». Мои просьбы предоставить файл для проверки вы игнорируете. Право ваше.[/quote]
да, пожалуйста:

Показать
Ó ÷åòûðíàäöàòèëåòíåé äåâî÷êè çàäåðæêà. Óæå äâå íåäåëè. Íàêîíåö-òî îíà ðåøàåòñÿ ðàññêàçàòü îá ýòîì ìàìå. Òà ïðîñòî â øîêå, ëåòèò â àïòåêó, ïîêóïàåò òåñò íà áåðåìåííîñòü è, î óæàñ, îí îêàçûâàåòñÿ ïîëîæèòåëüíûì.
×óòü íå ïîñåäåâ, ìàìà íàáðàñûâàåòñÿ íà äî÷êó: "Òû ÷òî, â ñâîåì óìå? Áûñòðî ïðèâåäè ìíå ñþäà ýòîãî íåãîäÿÿ, ýòîãî ìåðçàâöà, ýòîãî ñêîòèíó, êîòîðûé ïîñìåë ïðèêîñíóòüñÿ ê ìîåé íåíàãëÿäíîé, ê ìîåé åäèíñòâåííîé äî÷êå, ÿ åìó ïîêàæó, ãäå ðàêè çèìóþò!!!"
Ïîæàâ ïëå÷àìè, äî÷êà ïîäíèìàåò òðóáêó òåëåôîíà è íàáèðàåò íîìåð. ×åðåç ïîë÷àñà ê èõ äîìó ïîäúåçæàåò íîâåíüêàÿ Ôåððàðè, èç êîòîðîé âûõîäèò ìóæ÷èíà ñðåäíèõ ëåò â äîðîãîì êîñòþìå, íà÷èùåííûõ äî çåðêàëüíîãî áëåñêà áîòèíêàõ è ñ çîëîòûìè ÷àñàìè. Îí ñòåïåííî ïðîõîäèò â èõ äîì è ñàäèòñÿ íà êðåñëî â ãîñòèíîé, ãäå óæå ñîáðàëèñü ðàçãíåâàííàÿ ìàìà, èñïóãàííàÿ äî÷êà è òîëüêî ÷òî âåðíóâøèéñÿ ñ ðàáîòû åùå áîëåå ðàçãíåâàííûé ïàïà.
"Äîáðûé âå÷åð. Âàøà äî÷ü ïðîèíôîðìèðîâàëà ìåíÿ î òîé ïðîáëåìå, êîòîðàÿ òàê âàñ âîëíóåò. Êàê âû ïîíèìàåòå, ÿ íå ñìîãó íà íåé æåíèòüñÿ èç-çà ìîèõ ñåìåéíûõ îáñòîÿòåëüñòâ. Íî ÿ ãîòîâ ìàòåðèàëüíî êîìïåíñèðîâàòü âñå íåóäîáñòâà, êîòîðûå âûçâàíû ìîèì íåîñòîðîæíûì ïîâåäåíèåì. Èòàê, âîò ìîè óñëîâèÿ. Åñëè ðîäèòñÿ äî÷ü, òî ÿ ïåðåäàì åé â ñîáñòâåííîñòü äâà ìîèõ ìàãàçèíà è òðè çàâîäà. Òàêæå íà åå ñ÷åò â áàíêå ÿ ïîëîæó îäèí ìèëëèîí äîëëàðîâ. Åñëè ýòî áóäåò ñûí, òî òîãäà åìó äîñòàíåòñÿ òðè ìàãàçèíà, äâà çàâîäà è ìèëëèîí äîëëàðîâ. Åñëè ðîäÿòñÿ áëèçíåöû, òî êàæäûé ïîëó÷èò ïî çàâîäó è ìàãàçèíó, à òàêæå ïî ïÿòüñîò òûñÿ÷ íà ñ÷åòó. Íî, îäíàêî, åñëè áóäåò âûêèäûø, òîãäà..."
 ýòîò ìîìåíò äî òîãî íå ðàñêðûâøèé ðòà ïàïà êëàäåò åìó ðóêó íà ïëå÷î è ãîâîðèò:
"Òîãäà òû òðàõíåøü åå åùå ðàç!"
bormant написал:
text
$ echo $LANG
ru_RU.UTF-8
$ echo А роза упала на лапу Азора. | iconv -t cp1251 > test1251.txt
$ hexdump -C test1251.txt 
00000000  c0 20 f0 ee e7 e0 20 f3  ef e0 eb e0 20 ed e0 20  |. .... ..... .. |
00000010  eb e0 ef f3 20 c0 e7 ee  f0 e0 2e 0a              |.... .......|
0000001c
$ gedit test1251.txt &

Хм, замечательно определяет, WINDOWS-1251.

Slackware-14.0, x86_64, gedit-2.30.4.

так а мне что с этим делать? не особо разбираюсь в командах линукса, поэтому не понял ничего из того кода, что вы мне прислали

bormant написал:
ps. Возможно, из-за списка кодировок: "[UTF-8,CURRENT,WINDOWS-1251,KOI8R,ISO-8859-5]", в котором западноевропейская кодировка отсутствует.

западноевропейской не заметил, западная есть

bormant написал:
pps. Добавил в список ISO-8859-15, переименовал файл, открыл -- всё равно WINDOWS-1251.

ну у вас определил, у меня определяет тока если тыкаю правильную кодировку, возможно у меня просто текстовый редактор как-то по тупому сделан

#304071
"Gr@f" написал:
да, пожалуйста:

Я просил сам файл, а не «копи-паст».

#304073

"Gr@f" написал:
Ó ÷åòûðíàäöàòèëåòíåé äåâî÷êè
У четырнадцатилетней девочки
Определяет, однако.
Текст был сохранён в gedit как ISO-8859-15 и открыт с автоопределением кодировки.
#304179
Lupo Alberto написал:
[quote="Gr@f"]да, пожалуйста:

Я просил сам файл, а не «копи-паст».[/quote]
да, пожалуйста:
http://rghost.ru/44001269

bormant написал:
Определяет, однако.
Текст был сохранён в gedit как ISO-8859-15 и открыт с автоопределением кодировки.

да Х3 чё с этим текстовым редактором, пару раз определял, когда я тыкал западную кодировку, а теперь опять не определяет, даже если тыкаю эту кодировку

#304184

Воть решение для Ubuntu 11.10:

text
 GEdit - "Открыть..." - "Кодировка символов" - "Добавить или удалить" - "Кириллическая 1251" - "Добавить" - "Ок", выбрать файл и указать кодировку "Кириллическая (WINDOWS-1251)".

Проверил у себя на сусе - работает аналогично.
Если хочется "на лету" - то, как вариатн - KWrite.

#304189
"Gr@f" написал:
да, пожалуйста:
http://rghost.ru/44001269

kate открывает сразу правильно без каких-либо преднастроек кодировки.

#304191

"Gr@f" написал:
да, пожалуйста:
http://rghost.ru/44001269
Slackware-14.0, x86_64, локаль ru_RU.UTF-8, gedit-2.30.4, автоопределение кодировки работает.
Войдите или зарегистрируйтесь, чтобы ответить.