|
Выбор кодировки
|
|||
---|---|---|---|
#18+
Всем привет. Мой вопрос относится к статье http://www.ibase.ru/unicode_faq/ в которой сказано что если в FB база в кодировке UTF8 (кстати какой charset указывать?) то клиент с подключением Win1251 или WIN1250 будет без пробел перекодироваться автоматом сервером. Допустим есть у меня FB3, Delphi7, FIBPlus, и стоит задача написать нового клиента для работы в двух-трех странах (точно будет Win1251 и Win1250), стоит мне сейчас смотреть в сторону Delphi XE3-XE10 или забить и делать на Delphi7, указывая при коннекте правильную кодировку? Просто в Delphi7 я как рыба в воде, а к новому интерфейсу XE привыкать надо, но ведь нам все лень :) Да и самописные компоненты адаптировать прийдется... ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2016, 16:36 |
|
Выбор кодировки
|
|||
---|---|---|---|
#18+
если у тебя клиентская аппликация не предполагает ОДНОВРЕМЕННОГО использования Win1251, WIN1250, Win1252 и т.п., то с юникодом можно (пока) не заморачиваться Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2016, 16:49 |
|
Выбор кодировки
|
|||
---|---|---|---|
#18+
Мимопроходящийесли у тебя клиентская аппликация не предполагает ОДНОВРЕМЕННОГО использования Win1251, WIN1250, Win1252 и т.п., то с юникодом можно (пока) не заморачиваться Моя аппликация будет иметь только один TDatabase. Но к базе будут одновременно работать клиенты, подключенные с разными кодировками. Например в одной стране делают расход с 1250, во второй в этой же базе приход с 1251 к примеру ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2016, 16:53 |
|
Выбор кодировки
|
|||
---|---|---|---|
#18+
Shaman2, не реально. Грубо говоря в UTF-8 можно засунуть символ любой кодировки, но не любой символ из UTF-8 можно перевести в однобайтовую кодировку. Один клиент работает с Win1251 пишет кириллицей. Данные перекодируются в UTF-8. Как ты думаешь сможет ли прочесть эти данные тот кто подключится с win1252? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2016, 17:00 |
|
Выбор кодировки
|
|||
---|---|---|---|
#18+
Симонов ДенисShaman2, не реально. Грубо говоря в UTF-8 можно засунуть символ любой кодировки, но не любой символ из UTF-8 можно перевести в однобайтовую кодировку. Один клиент работает с Win1251 пишет кириллицей. Данные перекодируются в UTF-8. Как ты думаешь сможет ли прочесть эти данные тот кто подключится с win1252? он их читать небудет 100%. В условии задачи было чтобы названия товаров были на разных языках и один и тот же товар выводится на том языке, на котором хочет клиент. Естественно клиент захочет на своем языке, ну я так думаю. Проблема только с именами этих самых клиентов, делающих заказ. Но я пока не думаю что их тяжело будет перекодировать с 1250 на 1251 например ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2016, 17:22 |
|
Выбор кодировки
|
|||
---|---|---|---|
#18+
Ну в крайнем случае всегда в будущем можно будет проект перекомпилить в Delphi XE.. и коннектится уже в UTF8 к базе, если будут проблемы с перекодированием букв или слов. Просто ну никак мне сейчас не хочется менять среду, которая живет на моем компе уже лет этак 10 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2016, 17:26 |
|
Выбор кодировки
|
|||
---|---|---|---|
#18+
Hello, Shaman2! You wrote on 18 октября 2016 г. 17:28:34: Shaman2> Ну в крайнем случае всегда в будущем можно будет проект перекомпилить в Delphi XE..гы-гы! Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2016, 17:29 |
|
Выбор кодировки
|
|||
---|---|---|---|
#18+
Мимопроходящий, столкнусь с большими проблемами? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2016, 17:33 |
|
Выбор кодировки
|
|||
---|---|---|---|
#18+
Hello, Shaman2! You wrote on 18 октября 2016 г. 17:37:49: Shaman2> столкнусь с большими проблемами? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2016, 17:38 |
|
Выбор кодировки
|
|||
---|---|---|---|
#18+
Мимопроходящий, ну это смотря какие компоненты использовать. Прийдется ограничиться минимумом. Хотя скорее всего прийдется поднять виртуалку с Delphi XE ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2016, 17:40 |
|
Выбор кодировки
|
|||
---|---|---|---|
#18+
Shaman2 что если в FB база в кодировке UTF8 (кстати какой charset указывать?) нет никаких "баз в кодировке", ни у Firebird, ни у InterBase. Есть дефолтная кодировка, с которой будут создаваться столбцы таблиц, view, параметры процедур и переменные, если у них НЕ указан чарсет. http://www.ibase.ru/unicode_faq/ "Как создать базу в юникоде? Для этого достаточно при создании БД указать character set UTF8. После этого по умолчанию все создаваемые строковые поля и переменные (varchar, char) таблиц, процедур, триггеров и т.д. будут иметь кодировку UTF8, если вы не укажете другую специально." чарсет коннекта - это другая опция, когда строки из своего чарсета преобразуются в чарсет коннекта (и обратно). Поэтому чарсет коннекта можно указывать ЛЮБОЙ. Например, utf8, win1251, и т.д. Вопрос в том, что вы хотите получить, и преобразуется ли чарсет строк в чарсет коннекта. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2016, 19:03 |
|
Выбор кодировки
|
|||
---|---|---|---|
#18+
Shaman2Хотя скорее всего прийдется поднять виртуалку с Delphi XE я надеюсь, под XE имеется в виду Delphi 10.1, а не та XE, которая вышла 6 лет назад? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2016, 19:06 |
|
Выбор кодировки
|
|||
---|---|---|---|
#18+
Shaman2, резюме такое. 1. В случае столбцов UTF8 можно в них хранить данные в любой кодировке. Если кодировки явные, то тогда придется делать разные столбцы для вин1250, вин1251, и т.д. Чтобы вообще забить болт на кодировки - столбцы в utf8, коннкет в utf8. Тогда вообще все пофиг. 2. понятно, что из вин1251 в вин1250 никак не перекодировать. У нас кириллица, у них латиница, и т.д. Тут уже зависит от того, что вы собрались показывать клиенту приложения из одной страны в отношении данных других стран. 3. Delphi 7 не юникодная, совсем, с юникодом там будет капитальный гемор. И, да, "перекомпилировать" просто так вряд-ли получится. http://edn.embarcadero.com/article/38703 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2016, 19:11 |
|
Выбор кодировки
|
|||
---|---|---|---|
#18+
Одно немаловажное дополнение: kdvПоэтому чарсет коннекта можно указывать ЛЮБОЙ. Например, utf8, win1251, и т.д. Вопрос в том, что вы хотите получить... .... от сервера и что вы будете ему пихать обратно . Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2016, 19:54 |
|
Выбор кодировки
|
|||
---|---|---|---|
#18+
kdvShaman2 что если в FB база в кодировке UTF8 (кстати какой charset указывать?) нет никаких "баз в кодировке", ни у Firebird, ни у InterBase. Есть дефолтная кодировка, с которой будут создаваться столбцы таблиц, view, параметры процедур и переменные, если у них НЕ указан чарсет. http://www.ibase.ru/unicode_faq/ "Как создать базу в юникоде? Для этого достаточно при создании БД указать character set UTF8. После этого по умолчанию все создаваемые строковые поля и переменные (varchar, char) таблиц, процедур, триггеров и т.д. будут иметь кодировку UTF8, если вы не укажете другую специально." чарсет коннекта - это другая опция, когда строки из своего чарсета преобразуются в чарсет коннекта (и обратно). Поэтому чарсет коннекта можно указывать ЛЮБОЙ. Например, utf8, win1251, и т.д. Вопрос в том, что вы хотите получить, и преобразуется ли чарсет строк в чарсет коннекта. понял, а collate? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2016, 20:34 |
|
Выбор кодировки
|
|||
---|---|---|---|
#18+
kdvShaman2Хотя скорее всего прийдется поднять виртуалку с Delphi XE я надеюсь, под XE имеется в виду Delphi 10.1, а не та XE, которая вышла 6 лет назад? от X3 до X10, смотря на чем легче будет свои компоненты запустить ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2016, 20:36 |
|
Выбор кодировки
|
|||
---|---|---|---|
#18+
kdvShaman2, резюме такое. 1. В случае столбцов UTF8 можно в них хранить данные в любой кодировке. Если кодировки явные, то тогда придется делать разные столбцы для вин1250, вин1251, и т.д. Чтобы вообще забить болт на кодировки - столбцы в utf8, коннкет в utf8. Тогда вообще все пофиг. 2. понятно, что из вин1251 в вин1250 никак не перекодировать. У нас кириллица, у них латиница, и т.д. Тут уже зависит от того, что вы собрались показывать клиенту приложения из одной страны в отношении данных других стран. Кодировка базы однозначно utf8, все столбцы без ограничений. Требование в том числе и клиента. Кстати правильное мнение, редко я с клиентом соглашаюсь с полуслова :) Остается только понять как оно будет преобразовываться в 1250 и 1251, но это я уже посмотрю на реальных данных в конце недели kdv3. Delphi 7 не юникодная, совсем, с юникодом там будет капитальный гемор. И, да, "перекомпилировать" просто так вряд-ли получится. http://edn.embarcadero.com/article/38703 Спасибо, когда-то читал, сейчас еще раз перечитаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2016, 20:53 |
|
Выбор кодировки
|
|||
---|---|---|---|
#18+
Shaman2понял, а collate? а что collate? в ФБ можно прописать и "дефолтный коллэйт", и что? А как сортируются данные в юникоде? Какие есть сортировки (collate) для UTF8? http://www.ibase.ru/unicode_faq/ p.s. ну ладно, в этом faq действительно надо поточнее прописать про чарсет коннекта. Но про сортировки-то я что, не до конца все написал? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2016, 23:05 |
|
Выбор кодировки
|
|||
---|---|---|---|
#18+
kdvShaman2понял, а collate? а что collate? в ФБ можно прописать и "дефолтный коллэйт", и что? А как сортируются данные в юникоде? Какие есть сортировки (collate) для UTF8? http://www.ibase.ru/unicode_faq/ p.s. ну ладно, в этом faq действительно надо поточнее прописать про чарсет коннекта. Но про сортировки-то я что, не до конца все написал? Ну о unicode_ci все понятно. Просто раз дополняешь свой faq инфой о чарсете, то на всякий случай спросил и о collate :) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2016, 00:09 |
|
Выбор кодировки
|
|||
---|---|---|---|
#18+
Shaman2, collate при коннекте никак указать нельзя, и это не имеет смысла. Вообще, как мне кажется, все должно быть понятно из двух faq - про русские буквы в win1251 и про юникод. У меня, ясное дело, глаз замылен, потому что мне все просто и понятно, как там и есть на самом деле. Почему это непонятно другим - мне неясно. Моя задача - попытаться объяснить это на пальцах так, чтобы было понятно самому непонятливому :-) Видимо, лучше всего будет добавить объяснение чарсетов самым первым пунктом в unicode_faq. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2016, 00:27 |
|
|
start [/forum/topic.php?fid=40&msg=39329149&tid=1561914]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
66ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
others: | 18ms |
total: | 184ms |
0 / 0 |