Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Postgres encoding / 10 сообщений из 10, страница 1 из 1
14.02.2008, 15:46
    #35133278
izver
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Postgres encoding
Здраствуйте.
Есть вопрос. Надо создать базу данных.
Вопрос заключается в выборе инкодинга. Дело в том что база будет находится на linux suse10.1, а пользовательская прогррамма находиться на винде и linux suse10.1. Содержание данных будет на русском и на английском.
...
Рейтинг: 0 / 0
14.02.2008, 15:49
    #35133300
izver
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Postgres encoding
P.S. Поля на английском.
...
Рейтинг: 0 / 0
14.02.2008, 16:07
    #35133362
pamir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Postgres encoding
Бери UTF8, не прогадаешь.
...
Рейтинг: 0 / 0
14.02.2008, 16:22
    #35133417
Zashibis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Postgres encoding
Ваша программа будет общаться с PostgreSQL через ODBC?
В ODBC все строки автоматически преобразуются из виндовых кодировок в UTF-8 и обратно
...
Рейтинг: 0 / 0
14.02.2008, 19:30
    #35134012
Ёш
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Postgres encoding
в кодировке utf-8 не работают регулярные выражения да и строковые операции по идеи медленнее (многобайтные символы...)

в кодировке koi8-r отсутствует символ № (номер), а виндовые клиенты очень любят его вводить поскольку в их локальной кодировке (cp1251) он присутствует

я бы наверное выбрал cp1251 %) если Вам нужен полнотекстовой поиск то стоит почитать его описание, возможно он требует какую-то определённую кодировку русского, хотя незнаю...

--
„Истина — это вовсе не то, что можно убедительно доказать, это то, что
делает всё проще и понятнее“ — Антуан де Сент-Экзюпери
...
Рейтинг: 0 / 0
14.02.2008, 19:58
    #35134036
Zashibis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Postgres encoding
Регулярные выражения вполне даже работают в utf8

Код: plaintext
1.
2.
3.
4.
postgres=# select 'аааэ' ~ '^а';
 ?column?
----------
 t

Кодировка utf8, символы меж слешей - русские
...
Рейтинг: 0 / 0
14.02.2008, 19:58
    #35134038
pamir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Postgres encoding
Ёшв кодировке utf-8 не работают регулярные выражения Совсем-совсем не работают или в каких-то особенных случаях?
...
Рейтинг: 0 / 0
15.02.2008, 13:11
    #35134759
Ёш
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Postgres encoding
со всеми символами которые больше одного байта в длину, то есть со всеми не латинскими.
Zashibis, это очень простой пример :) он работает потому что русская буква 'a' (d0 b0 в utf-8) просто воспринимается как две буквы, одна с кодом 0xD0 и вторая с 0xB0, попробуй например регистронезависимое сравнение:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
seb=> select 'ABc' ~* '^abc';
 ?column?
----------
 t
( 1  запись)

seb=> select 'АБв' ~* '^абв';
 ?column?
----------
 f
( 1  запись)

--
„Истина — это вовсе не то, что можно убедительно доказать, это то, что
делает всё проще и понятнее“ — Антуан де Сент-Экзюпери
...
Рейтинг: 0 / 0
15.02.2008, 13:28
    #35134833
pamir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Postgres encoding
Ёшсо всеми символами которые больше одного байта в длину, то есть со всеми не латинскими.
Zashibis, это очень простой пример :) он работает потому что русская буква 'a' (d0 b0 в utf-8) просто воспринимается как две буквы, одна с кодом 0xD0 и вторая с 0xB0, попробуй например регистронезависимое сравнение:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
seb=> select 'ABc' ~* '^abc';
 ?column?
----------
 t
( 1  запись)

seb=> select 'АБв' ~* '^абв';
 ?column?
----------
 f
( 1  запись)

--
„Истина — это вовсе не то, что можно убедительно доказать, это то, что
делает всё проще и понятнее“ — Антуан де Сент-Экзюпери

А может быть это проблема не регулярных выражений, а локали
http://www.sql.ru/forum/actualsearch.aspx?search=upper&sin=0&a=&ma=0&bid=7&dt=-1&s=1&so=1

Проверьте, у вас upper и lower работают? (для русских букв)
...
Рейтинг: 0 / 0
15.02.2008, 14:46
    #35135245
Ёш
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Postgres encoding
спасибо за ссылку, эх если бы это так просто решалось... то ПЖ был бы идеален %) но у меня к сожалению всё впорядке с локалью и кодировкой :)
Код: plaintext
1.
2.
3.
4.
5.
seb=> select upper('русский') || lower('ЯЗЫК');
  ?column?
-------------
 РУССКИЙязык
( 1  запись)

к сожалению, регулярные выражения для мультибайтных кодировок не работали никогда. это известный факт %)
http://archives.postgresql.org/pgsql-bugs/2007-08/msg00079.php

под "не работали" я подразумеваю что не работает по крайней мере регистронезависимое сравнение, сравнение классов символов (\w [[:alpha:]])

ps: лично мне эта проблема с regexp совершенно не мешает, а вот с символом номера и koi8-r я напоролся конкретно... %) злобные ГОСТ-овцы (или кто там до этого хаоса кодировок додумался...) подложили грабли... этож надо было додуматься, сделать две кодировки своего языка, в одной из которых есть символ номера, а в другой - нету !


--
„Истина — это вовсе не то, что можно убедительно доказать, это то, что
делает всё проще и понятнее“ — Антуан де Сент-Экзюпери
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Postgres encoding / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]