172 похожих чатов

Кстати, про кодировки - база 1251, клиент 1251, но при

использовании to_char для числа c символом формата "D" пытается сунуть юникод и все ломается. Никто не сталкивался?

21 ответов

7 просмотров
Vadim 🆚- Автор вопроса

все точно в 1251, так то, все работает нормально

Vadim 🆚
все точно в 1251, так то, все работает нормально

А, ну раз нормально — тогда не о чем беспокоиться.

Vadim 🆚- Автор вопроса
Ilya Anfimov
А, ну раз нормально — тогда не о чем беспокоиться.

я имею ввиду, что только вот в этом месте вылезает странность. а не рекомендуется делать 1251?

Vadim 🆚
я имею ввиду, что только вот в этом месте вылезает...

Да как сказать... В общем, если надо — то почему бы и не сделать. Но как-то время такое, что это довольно странно.

Vadim 🆚
я имею ввиду, что только вот в этом месте вылезает...

Ну, покажыте что ли запрос и какую ошыбку выдаёт. Заодно — \l на этом сервере. (На всякий случай говорю заранее: текстом покажыте).

Vadim 🆚- Автор вопроса
Ilya Anfimov
Ну, покажыте что ли запрос и какую ошыбку выдаёт. ...

SELECT to_char(122.22,'999990D00'); SQL Error [22P05]: ERROR: character with byte sequence 0xe2 0x82 0xbd in encoding "UTF8" has no equivalent in encoding "WIN1251" vvv | postgres | WIN1251 | ru_RU.cp1251 | ru_RU.cp1251 | postgres | postgres | UTF8 | ru_RU.utf8 | ru_RU.utf8 | template0 | postgres | UTF8 | ru_RU.utf8 | ru_RU.utf8 | =c/postgres + | | | | | postgres=CTc/postgres template1 | postgres | UTF8 | ru_RU.utf8 | ru_RU.utf8 | =c/postgres + | | | | | postgres=CTc/postgres

Vadim 🆚
SELECT to_char(122.22,'999990D00'); SQL Error [22...

А, это не timestamp ещё. Смешно. В первом приближэнии похожэ не баг.

Vadim 🆚
SELECT to_char(122.22,'999990D00'); SQL Error [22...

Так. Нет. Стоп. ru_RU.cp1251 ? То есть это сервер на юниксе? Каком юниксе? И да, SELECT version() ещё покажыте.

Vadim 🆚- Автор вопроса
Ilya Anfimov
Так. Нет. Стоп. ru_RU.cp1251 ? То есть это сервер...

linux, какой не знаю. PostgreSQL 15.3 (IvorySQL 2.3) on x86_64-pc-linux-gnu, compiled by gcc (Debian 6.3.0-18+deb9u1) 6.3.0 20170516, 64-bit|

Похожэ, баг в 15 постгресе.

Vadim 🆚- Автор вопроса
Ilya Anfimov
Похожэ, баг в 15 постгресе.

значит будем все D менять на точку)

Vadim 🆚
значит будем все D менять на точку)

Можно ещё сказать ALTER DATABASE vvv SET lc_monetary='en_US.utf8' Ну, или C. Но ваш вариант мне нравится большэ! (Никогда не видел никакой пользы от запятой в качестве отделителя дробной части — а вреда видел много).

Vadim 🆚- Автор вопроса
Ilya Anfimov
Можно ещё сказать ALTER DATABASE vvv SET lc_moneta...

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

Vadim 🆚
да это код из Oracle, там все было с "D", по мне т...

Ну... Кагбы при правильной работе оно бы выдало запятую. Так что "никогда не будет" запятой там — только если выкинете это D.

Vadim 🆚
OMG - U+20BD ₽ 0xe2 0x82 0xbd

Да, видимо компилирует при первом обращении всю потребную часть локали — и падает на рубле этом. Жэлающие ещё могут поправить /usr/share/i18n/locales/ru_RU и перезапустить locale-gen. Но это как-то выглядит ещё геморройнее, чем поставить базе lc_monetary=C (или удалить эти все D).

Vadim 🆚- Автор вопроса
Ilya Anfimov
Да, видимо компилирует при первом обращении всю по...

спасибо, навели меня на мысль, вот это помогло - set lc_monetary to 'C'; set lc_numeric to 'POSIX';

Vadim 🆚
спасибо, навели меня на мысль, вот это помогло - ...

Я тут почесал немного всякие варианты — и выяснил, что баг связан не с 16 версией постгреса. А с тем, с какой локалью кластер создан изначально! То есть создаёшь с ru_RU.utf8 — и в базе, сделанной через create database ilank template='template0' encoding='koi8-r' owner='ilan' locale='ru_RU.KOI8-R'; форматирование падает из-за символа рубля. Создаёшь типа LANG=ru_RU.koi8-r pg_createcluster 15 testlocale — и такжэ созданные базы нифига не падают, а символ рубля ВНЕЗАПНО становится 'руб' (три буквы, да).

Vadim 🆚- Автор вопроса
Ilya Anfimov
Я тут почесал немного всякие варианты — и выяснил,...

Ну глюк есть глюк) вроде обошел его, но неприятно, конечно

Ilya Anfimov
Я тут почесал немного всякие варианты — и выяснил,...

Ща пачку форвардов пришлю: с телефона переписывать лент.

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта