Как стать автором
Обновить

Комментарии 21

Сдается мне, патчили Вы Postgre, а не UTF-8 :)
Неа. Пропатчил автор именно русскую UTF-8, которая в 7 релизе присутствует только как ссылка на ascii.

Автору спасибо. Когда нибудь пригодится.
НЛО прилетело и опубликовало эту надпись здесь
Мне ещё -1 влепи, чудо. Название статьи НЕРЕЛЕВАНТНО. Я согласен с ivanych. Я зашёл по заголовку обманувшись и увидел что эта статья мне в отличии от заголовка СОВЕРШЕННО НЕИНТЕРЕСНА. Я бы тоже назвал это «Патчим работу PostgreSQL с UTF-8 под FreeBSD». Патчить UTF-8 — это пересобирать мир с поддержкой UTF-8, чего здесь совсем и ни в каком виде не наблюдается. Можно минусовать. )
Эмм. Простите, а какой смысл собирать тут мир?

Мир собран с UTF-8, программы ищут правильную локаль, но вместо нее находят аскии. Пересборка тут не поможет никак.
У 95% пользователей FreeBSD (да и у меня сейчас) — KOI8-R. Это приводит например к эффекту крякозябр при сохранении файлов с русскими именами из Firefox 3 и т.п. Перейти на UTF-8 целиком возможно только пересборкой мира. И огромное число программ в портах этого не поймут (в отличии от положения дел, например, в Alt Linux). Поэтому я конечно рад, что у Вас мир собран с UTF-8, но на Вас свет клином не сошёлся.

Я не возражаю что проблемы PostgreSQL не менее важны чем например кодировка в samba. Мой пост был о том, что конкретно меня и других комментаторов Вы обманули нерелевантным заголовком.
Что заставляет вас работать в X'ах в кодировке ru_RU.KOI8-R?

У меня:
> uname -rsm
FreeBSD 7.2-PRERELEASE amd64
> locale
LANG=ru_RU.UTF-8
LC_CTYPE=«ru_RU.UTF-8»
LC_COLLATE=«ru_RU.UTF-8»
LC_TIME=«ru_RU.UTF-8»
LC_NUMERIC=«ru_RU.UTF-8»
LC_MONETARY=«ru_RU.UTF-8»
LC_MESSAGES=«ru_RU.UTF-8»
LC_ALL=ru_RU.UTF-8
> pkg_info | grep firefox
firefox-3.0.7,1 Web browser based on the browser portion of Mozilla
firefox3-i18n-3.0.7 Localized interface for Firefox3

ЧЯДНТ?

Совет:
> cat ~/.cshrc

setenv LOCALE ru_RU.UTF-8
setenv LANG ru_RU.UTF-8
setenv LC_ALL ru_RU.UTF-8
Здорово, iZEN! Да всё ты делаешь не так. )) Встречный вопрос: что заставляет вас пользоваться UTF-8 поддержка которого в FreeBSD практически отсутствует? Даже в mc поддержка UTF-8 появилась только до нового года (в linux — при царе горохе). Ни одна программа до сих пор не автоопределяет кодировку тех же тегов в mp3 или сабов к фильмам. Отсюда крякозябры в тегах при локали UTF-8 по всей моей 12 лет собиравшейся коллекции музыки. Впрочем, может быть вы не слушаете музыку. Или не обращаете внимание на такие глупости как теги. И не пользуетесь сабами. И на ftp тоже не ходите. Утилиты, разного рода конверторы не работают с UTF-8 в большинстве случаев, даже элементарно не сортируют. Но это всё конечно мелочи для тругуёвого юниксоида. Какой-то mp3blaster, какой-то deco, какой-то lftp, какой-то… хрень всякая консольная короче ))
> Отсюда крякозябры в тегах при локали UTF-8 по всей моей 12 лет собиравшейся коллекции музыки. Впрочем, может быть вы не слушаете музыку.

Может вы не тем плеером проигрываете музыку? Попробуйте BMP Media Player — он определяет кодировку CP1251 в ID1/3-тэгах MP3 и отображает правильно.

> Или не обращаете внимание на такие глупости как теги.

Я просто сохраняю тэги вновь рипнутой музыки в UTF-8. Sonata замечательно проигрывает и отображает названия и информацию трэков.

> И на ftp тоже не ходите.

Хожу на FTP-сервера через gFTP и плагин к JEdit — никаких крякозябр не замечал.

Короче, вылезайте из танка. :))
— Бабушка у вас так болит?
— Да!
— Ещё согнитесь, болит?
— Да!
— Ещё согнитесь, болит?
— Нет!
— Так и ходите!

Это ваши советы. Давайте сразу поставим Vista Ultimate, там проблем с UTF-8 точно нет?! Я же не спрашивал вашего совета iZEN чем мне пользоваться. Я ответил на вопрос почему 95% пользователей FreeBSD не пользуются UTF-8, включая того же Федорчука, а пользуются KOI8-R.

Я считаю Beep Media Player огромным уродским и неуклюжим продуктом которым совершенно невозможно пользоваться в отличии от изящного mp3blaster. Я считаю что в операционной системе штатно есть команда /usr/bin/ftp которая не знает UTF-8. Если сама FreeBSD не знает UTF-8 нафига козе боян, костыли все эти?? Я регулярно создаю файлы по touch blabla.txt и записываю туда разные умные мысли в KOI8-R. Как вы предлагаете набрать UTF-8 или посмотреть UTF-8 текстовик в mc «якобы с поддержкой UTF-8»? Если он кроме 8-ми битных кодировок ничего не знает и знать никогда скорей всего не будет? Или мне надо набирать текст в каком-нибудь модном редакторе, чтобы я потом не мог его посмотреть в mc?
А вы до сих пор в консоли ковыряетесь...syscons в FreeBSD пока что поддерживает только однобайтовые кодировки.

Всё, что чего касается UTF-8, лично я предпочитаю делать в X'ах.

(Вместо консольного mc лучше использовать GNOME Commander.)

> Я ответил на вопрос почему 95% пользователей FreeBSD не пользуются UTF-8, включая того же Федорчука, а пользуются KOI8-R.

Не говорите за всех. И Федорчук уже не тот, что был в 2002 году…
Кодировка ru_RU.UTF-8 в X'ах — без вариантов, потому что надписи в кодировке KOI8-R некорректно отображается в виджетах Gtk2 половины приложений.

man iconv на будущее
Вот не надо. 1) Я общался с Федорчуком непосредственно перед этим новым годом. Ему не сделали лоботомию, и он не разучился пользоваться консолью, равно как и Caps Lock для переключения кодировок. 2) Я смело говорю за всех потому что среди хорошо известных вам пользователей BSDPortal вы один такой. 3) Вы сами то поняли что написали? Я не использую GTK, т.к. предпочитаю вообще не компилировать GNOME даже под дулом пистолета. Однако, я писал для GTK/GDK и глубоко не понимаю как её виджеты (вы вообще понимаете что виджет это CheckBox например?) могут относиться к UTF-8 поддерживаемую GTK где-то с 2005 г (через 10 лет после появления GIMP и 13 лет после появления самой UTF-8). Зачем так бредить? Проблемы с UTF-8 в GTK-приложениях были, есть и будут, например в XCDRoast, т.к. это генетически заложено студентами писавшими ту курсовую. А вот чтобы наоборот, с однобайтовыми кодировками была проблема… Вы юморист батенька.
Что вы хотите этим сказать? Что у меня всё нормально с виджетами Gtk2 при использовании кодировки KOI8-R? :)

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

>Зачем так бредить? Проблемы с UTF-8 в GTK-приложениях были, есть и будут, например в XCDRoast, т.к. это генетически заложено студентами писавшими ту курсовую.

Не все пишут GTK-приложения только с поддержкой однобайтовых кодировок. Разумное большинство разработчиков всё-таки вменяемые люди.

Проблемы с UTF-8 существуют в устаревших тулкитах типа Gtk1.2 и OpenMotif. Хотя вот xcdroast-0.98.a.16 использует Gtk2, но попытка запуска даёт печальный результат (как вы и сказали в своём посте): > xcdroast
The font "-*-fixed-medium-r-normal-*-*-120-*-*-*-*-*-*,*" does not support all the required character sets for the current locale "ru_RU.UTF-8/ru_RU.UTF-8/ru_RU.UTF-8/C/ru_RU.UTF-8/ru_RU.UTF-8"
(Missing character set "KSC5601.1987-0")
(Missing character set "GB2312.1980-0")

WARNING: Using X-CD-Roast as non-root and was compiled without non-root-support.

(xcdroast:15040): Gtk-WARNING **: Failed to set text from markup due to error parsing markup: Ошибка в строке 1 на символе 27: Текст закодирован как UTF-8 недопустимым образом — недопустимая последовательность «������ 0.98alpha16»

(xcdroast:15040): Gtk-WARNING **: Failed to set text from markup due to error parsing markup: Ошибка в строке 1 на символе 27: Текст закодирован как UTF-8 недопустимым образом — недопустимая последовательность «������ 0.98alpha16»

(xcdroast:15040): Gtk-WARNING **: Failed to set text from markup due to error parsing markup: Ошибка в строке 1 на символе 12: Текст закодирован как UTF-8 недопустимым образом — недопустимая последовательность «��������������:»

(xcdroast:15040): Gtk-WARNING **: Failed to set text from markup due to error parsing markup: Ошибка в строке 1 на символе 12: Текст закодирован как UTF-8 недопустимым образом — недопустимая последовательность «��������������:»

(xcdroast:15040): Pango-WARNING **: Invalid UTF-8 string passed to pango_layout_set_text()
...
— надписи нечитабельны (квадратики с диагоналями вместо символов букв).

Однако при сборке X-CD-Roast без поддержки Gtk2 всё отображается нормально при любой текущей локали. (Специально проверил)
А, нет — заметил некорректное отображение копирайта (или чего-то там, что красным напечатано) в диалоге при старте xcdroast (который собран с Gtk1.2.10_20).

Так что всё это — ДНК авторов программных продуктов.
Но в KOI8-R он работает нормально! М.б. дело всё-таки в вынужденной поддержке рядом авторов ещё одной лишней кодировки? XCDRoast (как и многие другие программы, GKRellm например) был написан до 2005 года (1992-2005 UTF-8 никому была не нужна). И пенять его автору что-то как минимум глупо. Пенять надо продвиженцам UTF-8 фанатично лечащим Open Source. Кстати, юникодная таблица вообще-то четырёхбайтовая, а ещё существуют международные языки. Не планируете переходить на UTF-16 и учить Эсперанто?
Да не. Я Java занимаюсь с 1998 года. Там 16-битный Unicode (UCS-2) изначально встроен в ДНК языка и поддерживается конвертация однобайтных кодировок в разных направлениях.
Этим я хочу сказать _у_меня_ всё нормально с виджитами Gtk2 при использовании KOI8-R. Я привык доверять не только глазам, но также элементарно здравому смыслу. Если у меня вылезают крякозябры в каком-то одном месте, а у остальных пользователей не вылезают значит проблема в руках. Ошибки которые вы показываете относятся к конретным функциям библиотек Gtk и Pango.

Для Invalid UTF-8 string passed to pango_layout_set_text():
doc.crossplatform.ru/gtk/pango/1.22.2/pango-Layout-Objects.html
Ясно написано text: a valid UTF-8 string, а вот если не valid… ))
>Ясно написано text: a valid UTF-8 string, а вот если не valid… ))

Да там вроде по-русски написано однозначно.

Или у вас что-то опять не срослось с кодировками? :))
выставляешь кодировку, в которой данные хранятся, делаешь дамп, удаляешь сведения о кодировках и заливаешь дамп куда надо
Муж просил передать:

У порта postgresql83 есть опция: Use ICU for unicode collation. Она позволяет постгресу использовать для collation стороннюю библиотеку вместо системной.

На мой взгляд, патчить систему стоит только в самом крайнем случае, когда другие варианты решения проблемы не подошли. Если, конечно, ты не комиттер.
Зарегистрируйтесь на Хабре , чтобы оставить комментарий

Публикации

Истории