|
Чтение файла CSV | ☑ | ||
|---|---|---|---|---|
|
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
|
Или wiki:DSV
|
|||
|
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
|
можно подключить как внешний источник данных и читать запросом. ну или напрямую через оледб. и не будет там
|
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |