|
|
Чтение файла CSV
Fedor-1971, alex_newita, sikuda, evgeniy_n, H A D G E H O G s, Мультук, АгентБезопаснойНацио, Fragster, Elf_80_lvl, JohnGilbert, Telcher, CaIIIka, Winnie Buh, vbus, Fish, nick86, Sanchez_22, Гость из Мариуполя, AntiBuh, vyaz, NorthWind, _Batoo, vsy, RomanYS, toypaul, Хряк, paramedic, Silgis, Tarlich, Shalun, Timon1405, MWWRuza, Aleksey, FirstLineSupport, evorle145, mikecool, Страждущий, Caesar, Климов Сергей, ДенисСмирнов, laeg, Phace, АЛьФ, Жеглофф, Александр111, arsik, vladko, maxar, Злопчинский, shuhard, Kobol, Irbis, Baiji, hunter76, Builder, Умный Слоненок, d4rkmesa, aka MIK, Garykom, zenik, Vstur, Гена, Dotoshin, banco, Karamzin, Толич, Philix, unenu, Prog_man, p-soft, Lama12, Михаил Козлов, ЯнСмит, Homer, Lazy Stranger, ryutao, Гипервизор, KJlag, obs191, Kigo_Kigo, Greeen, maxab72, Волшебник
| ☑ |
|
0
Shalun
naïve
10.02.26
✎
10:00
|
Парни, всем привет. Столкнулся с такой бедой:
Читаю файл CSV, с разделителем пробел, всего 4 колонки
ТД.ПолучитьСтроку(НомерСтроки)
Все строки читает нормально, но в некоторых строках значение 2й колонки берет в кавычки. Вроде проблема в файле, но никаких косяков не видно. Сохраняется в xls нормально и читается потом с него то же нормально. А вот с csv - беда какая то.
Может кто сталкивался с такой проблемой, подскажите что не так, где "копать" нужно?
|
|
|
1
Fedor-1971
10.02.26
✎
10:04
|
(0) посмотри на проблемные строки через HEX редактор, может, в них есть непечатные символы
И, хорошо бы, показать кусок кода обработки строки
|
|
|
2
Shalun
naïve
10.02.26
✎
10:16
|
(1) Спасибо! Да, HEX редактор показал кавычки, но почему их не видно в файле? Нечитаемые кавычки?:-)
И заметил такую вещь, что в кавычки он берет те строки (колонки), где имеется хоть одна кавычка. Это наверное уже вопрос к редактору а не 1с. но если подскажете как так получается - буду благодарен!
|
|
|
3
Fedor-1971
10.02.26
✎
10:41
|
(2) Чисто предположение: последовательность 0A0D эквивалентна в винде Символы.ПС, а для линукс достаточно одного 0D.
Т.е. возможно, что файл подготовили в другой ОС или в другой кодовой системе, например, UTF-8 и кавычка экранируется предыдущим символом для просмотра, а при чтении 1С выкупила правильную кодировку и прочитала кавычку
|
|
|
4
Garykom
гуру
10.02.26
✎
10:44
|
Так ты не через ёксель файлы то смотри а напрямую как текст
Для CSV по стандарту в кавычки берутся все строковые значения со служебными символами
И да правильная работа с CSV средствами 1С довольно сложна, когда файлы сложные
Тупо читать через разделитель низзя
В строковых значениях внутри могут быть как " " так и "," или ";" или даже """
|
|
|
5
arsik
гуру
10.02.26
✎
10:51
|
Придумали бы уж какой ни будь стандартный символ - разделитель CSV :)
|
|
|
6
Garykom
гуру
10.02.26
✎
10:58
|
(5) так его сразу придумали в стандарте wiki:TSV
:)
|
|
|
7
Garykom
гуру
10.02.26
✎
10:58
|
|
|
|
8
Garykom
гуру
10.02.26
✎
11:01
|
(5) Фишка в том что CSV придуман для передачи и в 7 битных кодировках
И в чисто текстовых, где банально нет "лишних" символов
Поэтому приходится использовать только существующие
Так то оно вполне логично, если есть служебные символы в строковом значении - экранируем их и берем все значение в кавычки
Для записи легко реализовать
А вот для чтения нужен конечный автомат, но реализация простая
|
|
|
9
Fish
гуру
10.02.26
✎
11:13
|
(6) (7) Хм, получается, что если приходит CSV с разделителем ";", то это на самом деле не CSV, а DSV.
|
|
|
10
Irbis
10.02.26
✎
11:28
|
А уж когда в csv многострочный текст прилетает, да ещё со спецсимволами типа ; и " внутри, приходится в разборах и такую ересь учитывать.
|
|
|
11
Fragster
гуру
10.02.26
✎
15:21
|
можно подключить как внешний источник данных и читать запросом. ну или напрямую через оледб. и не будет там никаких таких проблем.
|
|