Главное меню
Мы солидарны с Украиной. Узнайте здесь, как можно поддержать Украину.

Чё меня бесит

Автор Алексей Гринь, марта 27, 2010, 21:09

0 Пользователи и 1 гость просматривают эту тему.

Python

Цитата: myst от февраля  7, 2011, 18:10
Цитата: Python от февраля  7, 2011, 17:28
Если в программе нет явного указания кодировки, то файлы, созданные с ее помощью на разных компьютерах, будут иметь разную кодировку, независимо от того, берет ли она кодировку локали или кодировку консоли. Кодировка локали, как и кодировка консоли, не обязана быть utf-8.
Вы вообще читаете, что я пишу? Там нет никаких если. Пытаетесь старую пластинку завести? Так не пойдёт.
Хорошо, давайте рассмотрим два варианта написания программ для работы с utf-8:
1) При любых действиях с файлами кодировка указывается явно (правильный надежный способ).
2) Используется кодировка по умолчанию, но при этом ожидается, что на компьютере пользователя стоит нужная локаль (т.е., у программы появляются дополнительные технические требования, что очень плохо).

Первый вариант не имеет отношения к локали вообще, но, по всей видимости, Вы мои сообщения действительно не читаете, поэтому подразумевали именно его.

Цитировать
Цитата: Python от февраля  7, 2011, 17:28
По идее, в каналах должна использоваться та же кодировка, что и в консоли.
По какой такой идее?
Цитата: Python от февраля  7, 2011, 17:28
Если же данные необходимо сохранить в файле, это можно осуществить и без перенаправления каналов.
И поломать конвейер? Гениально.
Вопрос в том, что нам нужно — консоль, пригодная для непосредственного взаимодействия с человеком и выводящая текст в виде текста, а не кракозябликов, или консоль, пригодная исключительно для перенаправления потоков. В идеальном мире консоль и весь остальной софт должны использовать одну и ту же кодировку, но в реальности это не всегда возможно, приходится выбирать из двух зол меньшее.
Пролетареві ніколи вчити європейських мов, бодай би свою знати добре і на ній принести до своєї хати світло знання (Гнат Хоткевич)
ÆC CASALI NAXI PRASQURI: AHOV CÆRU, MERTVÆRI TÆ SLAVUTÆT!
Вони просили його: «Скажи: кетум», а він говорив: «сатем», і не міг вимовити правильно.
Хотелось бы также отметить, что "Питон" - это "мышиный язык" : "пи+тон". © АБР-2

Triton

Цитата: Python от февраля  7, 2011, 19:31
Хорошо, давайте рассмотрим два варианта написания программ для работы с utf-8:
1) При любых действиях с файлами кодировка указывается явно (правильный надежный способ).
2) Используется кодировка по умолчанию, но при этом ожидается, что на компьютере пользователя стоит нужная локаль (т.е., у программы появляются дополнительные технические требования, что очень плохо).
А теперь — действительно правильный способ:
3) весь ввод-вывод и обработка данных внутри программы производятся в указанной в переменных окружения кодировке (что заметим, ничуть не мешает запускать любые программы с любыми кодировками/локалями), а в местах сопряжения разнокодировочных программ вставляется вызов одной, общесистемной программы перекодирования.
Велосипедостроительство никому не нужно, всё уже давно сделано за нас.
Молиться, поститься и слушать радио Ватника

myst

Цитата: Python от февраля  7, 2011, 19:31
Хорошо, давайте рассмотрим два варианта написания программ для работы с utf-8:
1) При любых действиях с файлами кодировка указывается явно (правильный надежный способ).
2) Используется кодировка по умолчанию, но при этом ожидается, что на компьютере пользователя стоит нужная локаль (т.е., у программы появляются дополнительные технические требования, что очень плохо).

Первый вариант не имеет отношения к локали вообще, но, по всей видимости, Вы мои сообщения действительно не читаете, поэтому подразумевали именно его.
Опять беспонтовое словоблудие. Медленно читайте мои слова. Программа всегда выводит текст в UTF-8. Как она написана, абсолютно неважно. Можно написать такую программу на жабе? Можно. Что из этого следует? Правильно, то, что:
Цитата: Python от февраля  7, 2011, 15:39
Одинаковости полюбому нет.
— враньё. Что и требовалось доказать. :smoke:

myst

Цитата: Python от февраля  7, 2011, 19:31
Вопрос в том, что нам нужно — консоль, пригодная для непосредственного взаимодействия с человеком и выводящая текст в виде текста, а не кракозябликов, или консоль, пригодная исключительно для перенаправления потоков. В идеальном мире консоль и весь остальной софт должны использовать одну и ту же кодировку, но в реальности это не всегда возможно, приходится выбирать из двух зол меньшее.
Нет, нужно всего лишь знать, что вывод идёт на консоль и преобразовывать вывод в кодировку консоли. В жабе этого нет, потому что это непереносимо. А привязывать ввод-вывод жабы к конкретной оси никто в здравом уме не будет.

myst

Цитата: Triton от февраля  7, 2011, 19:43
А теперь — действительно правильный способ:
3) весь ввод-вывод и обработка данных внутри программы производятся в указанной в переменных окружения кодировке (что заметим, ничуть не мешает запускать любые программы с любыми кодировками/локалями), а в местах сопряжения разнокодировочных программ вставляется вызов одной, общесистемной программы перекодирования.
Велосипедостроительство никому не нужно, всё уже давно сделано за нас.
+++

Python

Цитата: Triton от февраля  7, 2011, 19:43
Цитата: Python от февраля  7, 2011, 19:31
Хорошо, давайте рассмотрим два варианта написания программ для работы с utf-8:
1) При любых действиях с файлами кодировка указывается явно (правильный надежный способ).
2) Используется кодировка по умолчанию, но при этом ожидается, что на компьютере пользователя стоит нужная локаль (т.е., у программы появляются дополнительные технические требования, что очень плохо).
А теперь — действительно правильный способ:
3) весь ввод-вывод и обработка данных внутри программы производятся в указанной в переменных окружения кодировке (что заметим, ничуть не мешает запускать любые программы с любыми кодировками/локалями), а в местах сопряжения разнокодировочных программ вставляется вызов одной, общесистемной программы перекодирования.
Велосипедостроительство никому не нужно, всё уже давно сделано за нас.
Вообще, правильный подход, если речь идет о программе, рассчитанной на работу не именно с utf-8, а  с произвольно заданной кодировкой.
Пролетареві ніколи вчити європейських мов, бодай би свою знати добре і на ній принести до своєї хати світло знання (Гнат Хоткевич)
ÆC CASALI NAXI PRASQURI: AHOV CÆRU, MERTVÆRI TÆ SLAVUTÆT!
Вони просили його: «Скажи: кетум», а він говорив: «сатем», і не міг вимовити правильно.
Хотелось бы также отметить, что "Питон" - это "мышиный язык" : "пи+тон". © АБР-2

arseniiv

Цитата: Ванько от февраля  7, 2011, 19:28
Да о
брывать мы
сль на пол
услове эт
о ведь та
к приятно чит
ать
Вы пересолили. Хорошо пишет, как будто какая-та проза в стихах. Я пытался как-то спародировать, да не вышло.

(Не знаю, может, мне там обычно всё понятн, потому что сам склонен к синтаксическим страстям?)

Python

Цитата: myst от февраля  7, 2011, 20:18
Нет, нужно всего лишь знать, что вывод идёт на консоль и преобразовывать вывод в кодировку консоли. В жабе этого нет, потому что это непереносимо. А привязывать ввод-вывод жабы к конкретной оси никто в здравом уме не будет.
Кажется, я недавно предлагал что-то подобное. А «переносимость» и «ограниченность возможностей» — немного разные вещи. Для полной переносимости следует учитывать, что консольный ввод, консольный вывод и файловая система могут использовать три разных кодировки. Помнится, в старые времена юниксы тоже этим страдали.
Пролетареві ніколи вчити європейських мов, бодай би свою знати добре і на ній принести до своєї хати світло знання (Гнат Хоткевич)
ÆC CASALI NAXI PRASQURI: AHOV CÆRU, MERTVÆRI TÆ SLAVUTÆT!
Вони просили його: «Скажи: кетум», а він говорив: «сатем», і не міг вимовити правильно.
Хотелось бы также отметить, что "Питон" - это "мышиный язык" : "пи+тон". © АБР-2

ginkgo

Бесит, когда Java'у называют жабой.
Бесят кодировки, локали, консоли и обработка данных. Хотя раньше не бесили  :what:
"Θα φτιάξουμε μαρμελάδες."

Python

Как вообще кодировки могут кого-то бесить? Это ж самая интересная тема в мире :)
Пролетареві ніколи вчити європейських мов, бодай би свою знати добре і на ній принести до своєї хати світло знання (Гнат Хоткевич)
ÆC CASALI NAXI PRASQURI: AHOV CÆRU, MERTVÆRI TÆ SLAVUTÆT!
Вони просили його: «Скажи: кетум», а він говорив: «сатем», і не міг вимовити правильно.
Хотелось бы также отметить, что "Питон" - это "мышиный язык" : "пи+тон". © АБР-2

RawonaM

Ванько, меня не раз и не два просили некоторые лфчане забанить их по собственному желанию, я всегда отказывал, кроме одного раза (или двух?). Тебе не откажу, тока попроси. :)

Python

И да, разборки Ванько и RawonaM'a тоже бесят (это месть мне и myst'у?).
Пролетареві ніколи вчити європейських мов, бодай би свою знати добре і на ній принести до своєї хати світло знання (Гнат Хоткевич)
ÆC CASALI NAXI PRASQURI: AHOV CÆRU, MERTVÆRI TÆ SLAVUTÆT!
Вони просили його: «Скажи: кетум», а він говорив: «сатем», і не міг вимовити правильно.
Хотелось бы также отметить, что "Питон" - это "мышиный язык" : "пи+тон". © АБР-2

RawonaM

Цитата: Python от февраля  7, 2011, 21:04
И да, разборки Ванько и RawonaM'a тоже бесят
:+1:

myst

Цитата: Python от февраля  7, 2011, 20:43
Кажется, я недавно предлагал что-то подобное.
Я из Вас этот нюанс так и не вытянул. :( И по нижеследующему вижу, что Вы не понимаете, что это противопоказано жабе.

Цитата: Python от февраля  7, 2011, 20:43
Для полной переносимости следует учитывать, что консольный ввод, консольный вывод и файловая система могут использовать три разных кодировки.
Эта переносимость особенно улётна в системах, где невозможно узнать, куда идёт вывод и откуда идёт ввод. :eat:

myst

Бесит Гуглохром, у которого обновление сломалось.

Алалах

Offtop
подписываюсь под Ванькиным криком души.
Как говорят восточные мистики - для просветления нужен подъем кундалини... (с) Lugat
В китайском письме иероглиф, обозначающий «трудность, неприятность» изображается как две женщины под одной крышей.
«Если в семье всего одна жена, она вырастет эгоисткой».

Мы тут лингвисты, нас на понт не взять. (с) Dana

Мог ли существовать трицератопс, если бы не было киевской руси? (с)

Juif Eternel

Ванько - человек!
Mir lebn ejbik

Искандер

Цитата: Wulfila от февраля  7, 2011, 17:51
Бесит, что люди не прикрывают рот рукой
во время зевания..
Точнее, бесит то, что я не могу отвыкнуть
заглядываю в любезно распахнутую пасть..
Вроде не стоматолог........
"Niech żyją POLACY!! Ponieważ polacy są rasej nadczłowieków. Od nich jest przyszłość planety. Oni przeżyją nawet wojną atomowę, dlatego, że polacy są wieczni, bo chtoniczni. I dadzą potomstwo, które też będzie polakami i polkami. Niech żyjemy, hura!.." (c) Awwal12

Python

Цитата: myst от февраля  7, 2011, 20:14
Опять беспонтовое словоблудие. Медленно читайте мои слова. Программа всегда выводит текст в UTF-8. Как она написана, абсолютно неважно. Можно написать такую программу на жабе? Можно. Что из этого следует? Правильно, то, что:
Цитата: Python от февраля  7, 2011, 15:39
Одинаковости полюбому нет.
— враньё. Что и требовалось доказать. :smoke:
Что имеется в виду под одинаковостью? Одна и та же последовательность байтов на выводе? Да, такое написать можно. Один и тот же внешний вид данных, выводимых на консоль, независимо от кодовой страницы? Такое возможно лишь в том случае, если программа выводит чистый ASCII (или вообще ничего не выводит :green:) — во всех остальных случаях одинаковости нет. Но мне все равно непонятно, каким образом одинаковость появится или исчезнет, если джава будет брать кодировку по умолчанию, соответствующую консоли, а не так, как сейчас.
Пролетареві ніколи вчити європейських мов, бодай би свою знати добре і на ній принести до своєї хати світло знання (Гнат Хоткевич)
ÆC CASALI NAXI PRASQURI: AHOV CÆRU, MERTVÆRI TÆ SLAVUTÆT!
Вони просили його: «Скажи: кетум», а він говорив: «сатем», і не міг вимовити правильно.
Хотелось бы также отметить, что "Питон" - это "мышиный язык" : "пи+тон". © АБР-2

Demetrius

Цитата: Ванько от февраля  7, 2011, 19:28
Цитата: Demetrius от февраля  7, 2011, 18:20
А мне нравится.
Да о
брывать мы
сль на пол
услове эт
о ведь та
к приятно чит
ать
Ну враньё же. Когда пишет Ульфила, то это можно с интонацией прочитать, и каждый перевод строки как раз на месте паузы.

А у вас кака
я-то фигня
получилась.

Demetrius


Triton

Бесит 9.3%us,  5.6%sy,  0.0%ni,  0.0%id, 85.0%wa :(
Молиться, поститься и слушать радио Ватника

Алалах

Цитата: Demetrius от февраля  7, 2011, 21:30
Цитата: ginkgo от февраля  7, 2011, 20:45
Бесит, когда Java'у называют жабой.
-1
+2
бесит неимоверно таки! до исступления!
Как говорят восточные мистики - для просветления нужен подъем кундалини... (с) Lugat
В китайском письме иероглиф, обозначающий «трудность, неприятность» изображается как две женщины под одной крышей.
«Если в семье всего одна жена, она вырастет эгоисткой».

Мы тут лингвисты, нас на понт не взять. (с) Dana

Мог ли существовать трицератопс, если бы не было киевской руси? (с)

arseniiv

Бесит клон Валентина Н.

Python

Цитата: myst от февраля  7, 2011, 21:10
Эта переносимость особенно улётна в системах, где невозможно узнать, куда идёт вывод и откуда идёт ввод. :eat:
В таком случае, программу следует снабдить параметрами командной строки для указания кодировок. Что-то типа такого:
program --inputencoding=.... --outputencoding=.... --fileencoding=....
Пролетареві ніколи вчити європейських мов, бодай би свою знати добре і на ній принести до своєї хати світло знання (Гнат Хоткевич)
ÆC CASALI NAXI PRASQURI: AHOV CÆRU, MERTVÆRI TÆ SLAVUTÆT!
Вони просили його: «Скажи: кетум», а він говорив: «сатем», і не міг вимовити правильно.
Хотелось бы также отметить, что "Питон" - это "мышиный язык" : "пи+тон". © АБР-2