|
|
|
Firebird, Firedac и UTF8
|
|||
|---|---|---|---|
|
#18+
Добрый день. Столкнулся я со следующей проблемой: подключаюсь через Firedac к базе данных Firebird. У БД charset - UTF8. В настройках соединения TFDConnection - это указано. Таблицы открываются без проблем, поля с русскими буквами отражаются нормально. Но вот поднимаю я в процедуре БД исключение с русскими буквами и отображается оно "коряво". Насколько я могу судить, это ошибка Firedac, который получает текст исключения в UTF8 формате, но думает: что это ascii и преобразовывает в unicodestring. Частично эту проблему можно купировать примерно таким кодом: Код: pascal 1. 2. 3. 4. 5. 6. Но помимо того, что это корявая приточка, такой код частенько обрезает часть текста. Соответственно просьба: сталкивался ли кто нибудь с подобной ситуацией ? Есть ли какие-то мысли: как купировать такую проблему ? Заранее спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2019, 10:35 |
|
||
|
Firebird, Firedac и UTF8
|
|||
|---|---|---|---|
|
#18+
Это трабл в FB. Исключения не имеют кодировки. В основном рекомендуют не кидать исключения с национальными символами в тексте. Логика такая, что исключение от БД юзеру все равно нафиг не уперлось, и его надо оборачивать на клиенте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2019, 11:26 |
|
||
|
Firebird, Firedac и UTF8
|
|||
|---|---|---|---|
|
#18+
Василий 2В основном рекомендуют не кидать исключения с национальными символами в тексте. Логика такая, что исключение от БД юзеру все равно нафиг не уперлось, Спорный вопрос. Я люблю максимум логики закинуть в БД. Текст может быть вполне нужный юзеру, типа "Вы не можете удалять эту запись в полнолуние" или что-то в этом роде. Василий 2Это трабл в FB. Исключения не имеют кодировки. Вот как раз у меня получается опытным путем, что текст все таки приходит в UTF8, но преобразовывается в unicodestring так, как будто он ansi. То есть на латинский символ уходит 2 байта в E.Message, а на русский - 4 байта. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2019, 12:07 |
|
||
|
Firebird, Firedac и UTF8
|
|||
|---|---|---|---|
|
#18+
Sinemurius...Но помимо того, что это корявая приточка... И с FIB+ так делали, там в одном месте легко было сделать: есть компонент - централизованный обработчик... 18015826 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2019, 12:11 |
|
||
|
Firebird, Firedac и UTF8
|
|||
|---|---|---|---|
|
#18+
13.02.2019 12:07, Sinemurius пишет: > Вот как раз у меня получается опытным путем, что текст все таки приходит в UTF8, но преобразовывается в unicodestring так, как будто он ansi. тряси Арефьева Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2019, 12:44 |
|
||
|
Firebird, Firedac и UTF8
|
|||
|---|---|---|---|
|
#18+
Спасибо, всем. Я решил проблему примерно таким образом: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Тут преобразование RawByteString(E.Message) - это обратное действие. То есть по видимому UTF8 текст исключение преобразовался в unicodestring как ansistring, а потом уже RawByteString(E.Message) преобразовался обратно в UTF8. Мимопроходящийтряси Арефьева А кто такой Арефьев ? Модератор: Пользуйтесь тегом (кнопкой) SRC для оформления кода, пожалуйста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2019, 14:10 |
|
||
|
Firebird, Firedac и UTF8
|
|||
|---|---|---|---|
|
#18+
13.02.2019 14:10, Sinemurius пишет: > А кто такой Арефьев ? тот, кого нужно трясти. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2019, 14:11 |
|
||
|
Firebird, Firedac и UTF8
|
|||
|---|---|---|---|
|
#18+
Опишите проблему в топике FireDAC . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2019, 14:27 |
|
||
|
Firebird, Firedac и UTF8
|
|||
|---|---|---|---|
|
#18+
SinemuriusСпорный вопрос. Я люблю максимум логики закинуть в БД. Текст может быть вполне нужный юзеру, типа "Вы не можете удалять эту запись в полнолуние" или что-то в этом роде. Очень спорный)) понадобится текст изменить - придется в метаданные базы лезть. Выгонять юзеров, перекомпилять все ХП... Я уж не говорю про базы больше чем на одном языке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2019, 10:22 |
|
||
|
Firebird, Firedac и UTF8
|
|||
|---|---|---|---|
|
#18+
Василий 2Очень спорный)) понадобится текст изменить - придется в метаданные базы лезть. Выгонять юзеров, перекомпилять все ХП... Я уж не говорю про базы больше чем на одном языке. А exe-шники на Delphi перекомпилировать, затем расставлять пользователям - это по Вашему меньшая проблема ? Ну и далеко не всегда нужно выгонять пользователей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2019, 11:48 |
|
||
|
Firebird, Firedac и UTF8
|
|||
|---|---|---|---|
|
#18+
SinemuriusА exe-шники на Delphi перекомпилировать, затем расставлять пользователям - это по Вашему меньшая проблема ? У MUI тексты не прошиты в экзешниках. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2019, 13:09 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39773284&tid=2039807]: |
0ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
188ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
| others: | 232ms |
| total: | 523ms |

| 0 / 0 |
