|
Чудеса кодировки?
|
|||
---|---|---|---|
#18+
Ребята, ткните пальцем пожалуйста, уже сил нету. Имеем файл с платежами с кучей строк формата Пупкин Сергей Николаевич|РОССИЯ, 399446, Липецкая обл, Добринский р-н, Мухосранск ул, дом № 1, квартира |020000001|130.00|012018|0.00||4272395|30.01.2018 Каждая в отдельной строке Файл имеет кодировку 20866 (koi8-r). В процедуре UTL_FILE-ом открываю файл не чтение и начинаю читать по одной строке (пример строки выше). Далее эту строку парсю на нужные мне поля. И тут начинаются чудеса. При попытке прочитать третье поле (лицевой счет), читается поле 4 (сумма). Ниже пример из окна тестирования. Причем если копирую эту строку в обычное SQL окно все корректно отрабатывает(пример тоже ниже). Причем этот глюк не со всеми строками. Закономерности так и не нашел. В FAR-е просмотрел все строки, ни каких "левых" символов не увидел. Если в рукопашную изменяю кодировку файла на UTF8, то все корректно отрабатывает. Сам понимаю что проблема в кодировке, но как победить без ручного вмешательства не понимаю. Подскажите пожалуйста в какую сторону копать и как обойти это безобразие? Кодировка базы NLS_NCHAR_CHARACTERSET AL16UTF16 NLS_CHARACTERSET AL32UTF8 ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2019, 22:23 |
|
Чудеса кодировки?
|
|||
---|---|---|---|
#18+
Мелко, глаза сломаешь. Продублирую ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2019, 22:26 |
|
Чудеса кодировки?
|
|||
---|---|---|---|
#18+
shadow432, Utl_file умеет работать только с текстами в кодировке БД. Функция convert тоже. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2019, 23:44 |
|
Чудеса кодировки?
|
|||
---|---|---|---|
#18+
-2-Utl_file умеет работать только с текстами в кодировке БД."с текстами только" shadow432Сам понимаю что проблема в кодировке, но как победить без ручного вмешательства не понимаю.RTFM utl_file.get_raw / bfile ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2019, 07:59 |
|
Чудеса кодировки?
|
|||
---|---|---|---|
#18+
-2-shadow432, Utl_file умеет работать только с текстами в кодировке БД. Функция convert тоже. Значит единственный вариант это менять кодировку файла до открытия UTL_FILE-ом? Или все же можно прочитать, а потом работать с кодировкой? И тем не менее мне не понятно. В окне тестирования PL/SQL я ведь вижу корректный текст и в обычном SQL запросе REGEXP_SUBSTR работает корректно с этой же строкой. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2019, 08:04 |
|
Чудеса кодировки?
|
|||
---|---|---|---|
#18+
shadow432Значит единственный вариант это менять кодировку файла до открытия UTL_FILE-омЕсть несколько вариантов. Наиболее напрашивающийся - внешняя таблица. shadow432В окне тестирования PL/SQL я ведь вижу корректный текствидимая корректность может быть обусловлена кратностью ошибок. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2019, 08:54 |
|
Чудеса кодировки?
|
|||
---|---|---|---|
#18+
-2-shadow432Значит единственный вариант это менять кодировку файла до открытия UTL_FILE-омЕсть несколько вариантов. Наиболее напрашивающийся - внешняя таблица. shadow432В окне тестирования PL/SQL я ведь вижу корректный текствидимая корректность может быть обусловлена кратностью ошибок. С внешними таблицами тоже засада. Сразу не написал об этом. В общем у меня 3 разных типа файлов для загрузки. У них разные разделители и разные кодировки (win1251, utf8, 20866) ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2019, 08:58 |
|
Чудеса кодировки?
|
|||
---|---|---|---|
#18+
-2-только с текстами в кодировке БД. Функция convert тоже . Ммм? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2019, 14:33 |
|
Чудеса кодировки?
|
|||
---|---|---|---|
#18+
shadow432С внешними таблицами тоже засада. Сразу не написал об этом. В общем у меня 3 разных типа файлов для загрузки. У них разные разделители и разные кодировки (win1251, utf8, 20866) Не томите уже, в чем засада с внешними таблицами? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2019, 14:33 |
|
Чудеса кодировки?
|
|||
---|---|---|---|
#18+
andrey_anonymous-2-только с текстами в кодировке БД. Функция convert тоже .Ммм?convertThe return value of CONVERT has a character data type, so it should be either in the database character set or in the national character set, depending on the data type. Any dest_char_set that is not one of these two character sets is unsupported. The char argument and the source_char_set have the same requirements. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2019, 15:37 |
|
Чудеса кодировки?
|
|||
---|---|---|---|
#18+
andrey_anonymousshadow432С внешними таблицами тоже засада. Сразу не написал об этом. В общем у меня 3 разных типа файлов для загрузки. У них разные разделители и разные кодировки (win1251, utf8, 20866) Не томите уже, в чем засада с внешними таблицами? Времени не было посмотреть. Засада в том что имеем 3 типа файлов с разными разделителями и кодировками. Да в общем то наверное и не засада. Туплю. Просто нужно будет создать отдельную ВТ для каждого типа. А с кодировками проблем не будет? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2019, 16:08 |
|
Чудеса кодировки?
|
|||
---|---|---|---|
#18+
-2-andrey_anonymousпропущено... Ммм?convertThe return value of CONVERT has a character data type, so it should be either in the database character set or in the national character set, depending on the data type. Any dest_char_set that is not one of these two character sets is unsupported. The char argument and the source_char_set have the same requirements. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31.
... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2019, 16:21 |
|
Чудеса кодировки?
|
|||
---|---|---|---|
#18+
andrey_anonymous Код: plsql 1. 2. 3.
Вот корень заблуждений. Все однобайтовые последовательности байт допустимы, что создаёт иллюзию "рабочести". ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2019, 16:39 |
|
Чудеса кодировки?
|
|||
---|---|---|---|
#18+
ElicВот корень заблуждений. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2019, 17:32 |
|
Чудеса кодировки?
|
|||
---|---|---|---|
#18+
А кто мешает файлы сначала в уникод перегонять, а потом заливать? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2019, 10:18 |
|
Чудеса кодировки?
|
|||
---|---|---|---|
#18+
Als1973А кто мешаетТогда уж - кто мешает данные непосредственно в систему вводить. Als1973перегонятьУмножение сущностей усложняет сопровождение. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2019, 10:27 |
|
Чудеса кодировки?
|
|||
---|---|---|---|
#18+
-2-, Какие сущности? Простое условие, система принимает данные в уникод. Всё. Завтра тебе на китайском принесут, будем хранимку опять переделывать? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2019, 11:08 |
|
Чудеса кодировки?
|
|||
---|---|---|---|
#18+
Als1973Какие сущности?Узость мышления не позволяет тебе правильно интерпретировать фразу "умножение сущностей". Als1973на китайскомКитайская кодировка?Als1973будем хранимку опять переделыватьМне проще переделать sql-код, чем "перегонять". ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2019, 11:28 |
|
Чудеса кодировки?
|
|||
---|---|---|---|
#18+
Als1973Какие сущности? Простое условие, система принимает данные в уникод. Всё.Дебилы вполне могут допускать, что все должны подстраиваться под их миронедоощущение. И кончают соответственно. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2019, 16:30 |
|
Чудеса кодировки?
|
|||
---|---|---|---|
#18+
Elic, Один мальчик писал все на JavaScript PL/SQL, и клиент, и сервер, говорил что нравится, удобно, читабельно. Потом его в дурку забрали, конечно. (c) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2019, 09:29 |
|
|
start [/forum/topic.php?fid=52&fpage=73&tid=1882335]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
33ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
61ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 154ms |
0 / 0 |