Гость
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Выбор кодировки / 20 сообщений из 20, страница 1 из 1
18.10.2016, 16:36
    #39329128
Shaman2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбор кодировки
Всем привет. Мой вопрос относится к статье http://www.ibase.ru/unicode_faq/ в которой сказано что если в FB база в кодировке UTF8 (кстати какой charset указывать?) то клиент с подключением Win1251 или WIN1250 будет без пробел перекодироваться автоматом сервером.

Допустим есть у меня FB3, Delphi7, FIBPlus, и стоит задача написать нового клиента для работы в двух-трех странах (точно будет Win1251 и Win1250), стоит мне сейчас смотреть в сторону Delphi XE3-XE10 или забить и делать на Delphi7, указывая при коннекте правильную кодировку?
Просто в Delphi7 я как рыба в воде, а к новому интерфейсу XE привыкать надо, но ведь нам все лень :) Да и самописные компоненты адаптировать прийдется...
...
Рейтинг: 0 / 0
18.10.2016, 16:49
    #39329146
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбор кодировки
если у тебя клиентская аппликация не предполагает ОДНОВРЕМЕННОГО использования Win1251, WIN1250, Win1252 и т.п., то с юникодом можно (пока) не заморачиваться
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
18.10.2016, 16:53
    #39329149
Shaman2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбор кодировки
Мимопроходящийесли у тебя клиентская аппликация не предполагает ОДНОВРЕМЕННОГО использования Win1251, WIN1250, Win1252 и т.п., то с юникодом можно (пока) не заморачиваться


Моя аппликация будет иметь только один TDatabase. Но к базе будут одновременно работать клиенты, подключенные с разными кодировками. Например в одной стране делают расход с 1250, во второй в этой же базе приход с 1251 к примеру
...
Рейтинг: 0 / 0
18.10.2016, 17:00
    #39329155
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбор кодировки
Shaman2,

не реально. Грубо говоря в UTF-8 можно засунуть символ любой кодировки, но не любой символ из UTF-8 можно перевести в однобайтовую кодировку.

Один клиент работает с Win1251 пишет кириллицей. Данные перекодируются в UTF-8. Как ты думаешь сможет ли прочесть эти данные тот кто подключится с win1252?
...
Рейтинг: 0 / 0
18.10.2016, 17:22
    #39329174
Shaman2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбор кодировки
Симонов ДенисShaman2,

не реально. Грубо говоря в UTF-8 можно засунуть символ любой кодировки, но не любой символ из UTF-8 можно перевести в однобайтовую кодировку.

Один клиент работает с Win1251 пишет кириллицей. Данные перекодируются в UTF-8. Как ты думаешь сможет ли прочесть эти данные тот кто подключится с win1252?

он их читать небудет 100%. В условии задачи было чтобы названия товаров были на разных языках и один и тот же товар выводится на том языке, на котором хочет клиент. Естественно клиент захочет на своем языке, ну я так думаю.
Проблема только с именами этих самых клиентов, делающих заказ. Но я пока не думаю что их тяжело будет перекодировать с 1250 на 1251 например
...
Рейтинг: 0 / 0
18.10.2016, 17:26
    #39329177
Shaman2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбор кодировки
Ну в крайнем случае всегда в будущем можно будет проект перекомпилить в Delphi XE.. и коннектится уже в UTF8 к базе, если будут проблемы с перекодированием букв или слов. Просто ну никак мне сейчас не хочется менять среду, которая живет на моем компе уже лет этак 10
...
Рейтинг: 0 / 0
18.10.2016, 17:29
    #39329180
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбор кодировки
Hello, Shaman2!
You wrote on 18 октября 2016 г. 17:28:34:

Shaman2> Ну в крайнем случае всегда в будущем можно будет проект перекомпилить в Delphi XE..гы-гы!

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
18.10.2016, 17:33
    #39329182
Shaman2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбор кодировки
Мимопроходящий,

столкнусь с большими проблемами?
...
Рейтинг: 0 / 0
18.10.2016, 17:38
    #39329185
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбор кодировки
Hello, Shaman2!
You wrote on 18 октября 2016 г. 17:37:49:

Shaman2> столкнусь с большими проблемами?

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
18.10.2016, 17:40
    #39329187
Shaman2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбор кодировки
Мимопроходящий,

ну это смотря какие компоненты использовать. Прийдется ограничиться минимумом.
Хотя скорее всего прийдется поднять виртуалку с Delphi XE
...
Рейтинг: 0 / 0
18.10.2016, 19:03
    #39329260
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбор кодировки
Shaman2 что если в FB база в кодировке UTF8 (кстати какой charset указывать?)

нет никаких "баз в кодировке", ни у Firebird, ни у InterBase. Есть дефолтная кодировка, с которой будут создаваться столбцы таблиц, view, параметры процедур и переменные, если у них НЕ указан чарсет.

http://www.ibase.ru/unicode_faq/
"Как создать базу в юникоде?
Для этого достаточно при создании БД указать character set UTF8. После этого по умолчанию все создаваемые строковые поля и переменные (varchar, char) таблиц, процедур, триггеров и т.д. будут иметь кодировку UTF8, если вы не укажете другую специально."


чарсет коннекта - это другая опция, когда строки из своего чарсета преобразуются в чарсет коннекта (и обратно). Поэтому чарсет коннекта можно указывать ЛЮБОЙ. Например, utf8, win1251, и т.д. Вопрос в том, что вы хотите получить, и преобразуется ли чарсет строк в чарсет коннекта.
...
Рейтинг: 0 / 0
18.10.2016, 19:06
    #39329263
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбор кодировки
Shaman2Хотя скорее всего прийдется поднять виртуалку с Delphi XE
я надеюсь, под XE имеется в виду Delphi 10.1, а не та XE, которая вышла 6 лет назад?
...
Рейтинг: 0 / 0
18.10.2016, 19:11
    #39329266
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбор кодировки
Shaman2,

резюме такое.
1. В случае столбцов UTF8 можно в них хранить данные в любой кодировке. Если кодировки явные, то тогда придется делать разные столбцы для вин1250, вин1251, и т.д. Чтобы вообще забить болт на кодировки - столбцы в utf8, коннкет в utf8. Тогда вообще все пофиг.
2. понятно, что из вин1251 в вин1250 никак не перекодировать. У нас кириллица, у них латиница, и т.д. Тут уже зависит от того, что вы собрались показывать клиенту приложения из одной страны в отношении данных других стран.
3. Delphi 7 не юникодная, совсем, с юникодом там будет капитальный гемор. И, да, "перекомпилировать" просто так вряд-ли получится.
http://edn.embarcadero.com/article/38703
...
Рейтинг: 0 / 0
18.10.2016, 19:54
    #39329304
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбор кодировки
Одно немаловажное дополнение:
kdvПоэтому чарсет коннекта можно указывать ЛЮБОЙ. Например, utf8, win1251, и т.д. Вопрос в
том, что вы хотите получить...
.... от сервера и что вы будете ему пихать обратно .
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
18.10.2016, 20:34
    #39329317
Shaman2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбор кодировки
kdvShaman2 что если в FB база в кодировке UTF8 (кстати какой charset указывать?)

нет никаких "баз в кодировке", ни у Firebird, ни у InterBase. Есть дефолтная кодировка, с которой будут создаваться столбцы таблиц, view, параметры процедур и переменные, если у них НЕ указан чарсет.

http://www.ibase.ru/unicode_faq/
"Как создать базу в юникоде?
Для этого достаточно при создании БД указать character set UTF8. После этого по умолчанию все создаваемые строковые поля и переменные (varchar, char) таблиц, процедур, триггеров и т.д. будут иметь кодировку UTF8, если вы не укажете другую специально."


чарсет коннекта - это другая опция, когда строки из своего чарсета преобразуются в чарсет коннекта (и обратно). Поэтому чарсет коннекта можно указывать ЛЮБОЙ. Например, utf8, win1251, и т.д. Вопрос в том, что вы хотите получить, и преобразуется ли чарсет строк в чарсет коннекта.

понял, а collate?
...
Рейтинг: 0 / 0
18.10.2016, 20:36
    #39329318
Shaman2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбор кодировки
kdvShaman2Хотя скорее всего прийдется поднять виртуалку с Delphi XE
я надеюсь, под XE имеется в виду Delphi 10.1, а не та XE, которая вышла 6 лет назад?

от X3 до X10, смотря на чем легче будет свои компоненты запустить
...
Рейтинг: 0 / 0
18.10.2016, 20:53
    #39329326
Shaman2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбор кодировки
kdvShaman2,

резюме такое.
1. В случае столбцов UTF8 можно в них хранить данные в любой кодировке. Если кодировки явные, то тогда придется делать разные столбцы для вин1250, вин1251, и т.д. Чтобы вообще забить болт на кодировки - столбцы в utf8, коннкет в utf8. Тогда вообще все пофиг.
2. понятно, что из вин1251 в вин1250 никак не перекодировать. У нас кириллица, у них латиница, и т.д. Тут уже зависит от того, что вы собрались показывать клиенту приложения из одной страны в отношении данных других стран.


Кодировка базы однозначно utf8, все столбцы без ограничений. Требование в том числе и клиента. Кстати правильное мнение, редко я с клиентом соглашаюсь с полуслова :)

Остается только понять как оно будет преобразовываться в 1250 и 1251, но это я уже посмотрю на реальных данных в конце недели


kdv3. Delphi 7 не юникодная, совсем, с юникодом там будет капитальный гемор. И, да, "перекомпилировать" просто так вряд-ли получится.
http://edn.embarcadero.com/article/38703

Спасибо, когда-то читал, сейчас еще раз перечитаю.
...
Рейтинг: 0 / 0
18.10.2016, 23:05
    #39329379
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбор кодировки
Shaman2понял, а collate?
а что collate? в ФБ можно прописать и "дефолтный коллэйт", и что?

А как сортируются данные в юникоде?
Какие есть сортировки (collate) для UTF8?
http://www.ibase.ru/unicode_faq/

p.s. ну ладно, в этом faq действительно надо поточнее прописать про чарсет коннекта. Но про сортировки-то я что, не до конца все написал?
...
Рейтинг: 0 / 0
19.10.2016, 00:09
    #39329420
Shaman2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбор кодировки
kdvShaman2понял, а collate?
а что collate? в ФБ можно прописать и "дефолтный коллэйт", и что?

А как сортируются данные в юникоде?
Какие есть сортировки (collate) для UTF8?
http://www.ibase.ru/unicode_faq/

p.s. ну ладно, в этом faq действительно надо поточнее прописать про чарсет коннекта. Но про сортировки-то я что, не до конца все написал?

Ну о unicode_ci все понятно. Просто раз дополняешь свой faq инфой о чарсете, то на всякий случай спросил и о collate :)
...
Рейтинг: 0 / 0
19.10.2016, 00:27
    #39329432
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбор кодировки
Shaman2,

collate при коннекте никак указать нельзя, и это не имеет смысла. Вообще, как мне кажется, все должно быть понятно из двух faq - про русские буквы в win1251 и про юникод. У меня, ясное дело, глаз замылен, потому что мне все просто и понятно, как там и есть на самом деле. Почему это непонятно другим - мне неясно. Моя задача - попытаться объяснить это на пальцах так, чтобы было понятно самому непонятливому :-)
Видимо, лучше всего будет добавить объяснение чарсетов самым первым пунктом в unicode_faq.
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Выбор кодировки / 20 сообщений из 20, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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