`

СПЕЦИАЛЬНЫЕ
ПАРТНЕРЫ
ПРОЕКТА

Архив номеров

Как изменилось финансирование ИТ-направления в вашей организации?

Best CIO

Определение наиболее профессиональных ИТ-управленцев, лидеров и экспертов в своих отраслях

Человек года

Кто внес наибольший вклад в развитие украинского ИТ-рынка.

Продукт года

Награды «Продукт года» еженедельника «Компьютерное обозрение» за наиболее выдающиеся ИТ-товары

 

Игорь Дериев

Универсальность vs. логика

+77
голосов

Вроде бы CSV – достаточно очевидный и стандартный способ обмена данными между программами, оперирующими табличными данными. Но «сюрпризов» он по-прежнему преподносит более чем.

Не спрашивайте почему и зачем (это долгая и печальная история, начавшаяся еще вот с этого), но понадобилось передать в смартфон адресную книгу именно через CSV. Ну, есть программы, которые это умеют, главная задача – получить исходный файл.

Казалось бы, чего проще? Имеется резервная копия телефонной книги в Outlook, которая умеет экспортировать контакты в CSV: раз – и готово. Но если бы все было так просто, не было бы этого текста :) В результирующем файле все символы кириллицы (имена, фамилии) оказались заменены знаком вопроса. Предположив, что что-то сломалось в Outlook, попробовал проделать то же самое в Hotmail. Аналогично!

Хорошо, что я человек бывалый и немного с проблемами CSV знакомый. В частности, еще давно сталкивался с их переносом (и соответствующих макросов) между системами с разными языками, а главное – с разными региональными настройками. Та самая comma оказывается запятой только для американцев и британцев, а для прочих европейцев – точкой с запятой. Ну, тут как бы все честно, нам запятая нужна для других целей. В любом случае хорошо, что есть стандартный способ управления такими нюансами – особенно, если пользователь о них осведомлен.

У меня ОС англоязычная, Microsoft Office русскоязычный, системная локаль выставлена правильно, но вот служебные форматы по какой-то причине я оставил английские. Здесь-то собака и зарыта. Поменял форматы на русские и все получилось. С Hotmail, кстати, ситуация аналогична: достаточно сделать интерфейс сервиса русским и кириллица преобразуется корректно.

В общем, happy end, но осадок остался. Ведь и Outlook, и Hotmail оперируют Unicode. В этом легко убедиться: в Hotmail достаточно глянуть на текущую кодировку веб-страницы, а в Microsoft Office, к примеру, испортить заголовок doc-файла и, открыв его в Word, выбрать Unicode. На первый взгляд может показаться, что перекодировка Unicode в ANSI – процесс неоднозначный, ведь часть информации действительно теряется. Но ведь язык-то известен! На то и Unicode. Логично предположить, что и в дальнейшем (в CSV) я хочу получить данные на том же языке. На деле же происходит  следующее: почему-то применяется таблица перекодировки для некоего «главного» языка, в данном случае, видимо, английского, естественно, кириллица не попадает на нужные места в таблице ANSI и программа в ужасе заменяет ее знаком вопроса. Хотя, чем знак вопроса лучше, чем другие (предположительно) нечитаемые, но все же несущие информацию символы?

Странно сталкиваться с подобными проблемами в XXI веке. Программисты, видимо, пошли по пути наименьшего сопротивления, выбрав универсальный алгоритм "на все случаи жизни", хотя стоило бы чуть-чуть дополнительно поразмыслить. К примеру, обнаружив большое количество «левых» символов, вероятно, стоит заменить таблицу перекодировки. Хотя нельзя исключить что это унаследованная проблема. Ведь получается, что текстовые данные, записанные более чем в двух алфавитах, через CSV перенести полностью нельзя в принципе. Так почему бы не использовать для этого формата Unicode, предоставив выбор пользователю?

+77
голосов

Напечатать Отправить другу

Читайте также

Месяц назад были аналогичные пляски с бубном:
Дано:
Телефон Samsung 4-х летней давности
Свежий Samsung Galaxy Gio на Android 2.3
Оказалость что программы у них для работы с компом разные и новая прога старый телефон не признает, а старая новый.
Никакие стандартные методы переноса адресной книги не сработали. Остался только экспорт через оутлук с промежуточной остановкой csv:
1)Для передачи кирилицы понадобилось сохранять файл при экспорте к кодировке дос.
2)Обнаружить несоответствие полей в резулитирующей таблице - контакты попросту оказывались без номеров телефона.
3)Разбирался со структурой телефонной книги нового телефона.
4)В ручную редактировал csv чтобы поле где хранится номер совпало с аналогичным в телефонной книге. И удалял ненужные поля.
5)Пару часов матерных слов в адрес гениев из корейской глубинки и доставаний жены - скоро ей телефон вернут, и о чудо оно работает.

Игорь,
это Вы несколько сот контактов из смартфона Nokia в Windows Phone не пробовали переносить.
Ко всем перечисленным выше мучениям, как оказалось, можно добваить ещё и языковые преференции вебинтерфейса службы Windows Live.
Комбинированием региональных установок на каждом из этапов конвертации на третий день удалось смигрировать адресную книгу с минимальными потерями...

так Windows Live = Hotmail
а в общем, да, не сомневаюсь, что бывает и хуже.

Поэтому когда я узнал что Nokia кинула всех владельцев смартфонов на symbian и перешла на microsoft я сразу догадался что мой следующий телефон будет какой то другой фирмы.

То вы его готовить не умеете :) А если серьезно, то СSV все равно не подходит для переноса адресной книги. И не по причине ограниченности его формата, а по причине тупизны экспорта/импорта, который не понимает имена полей с пробелами, не в ASCII, и т.п.
Много раз переносил адресную книгу, начиная с Siemens-ов на самые разные девайсы (кроме, конечно, айвсякого) с WM5,6 Android, Symbian и просто виндой.
Не надо делать экспорт/импорт. Надо настроить синхронизацию штатными средствами для обеих плеч. И все.
Т.е. с исходного девайса синхронизируем с аутлуком, а потом дестинайшен девайс синхронизируем с аутлуком.

Переноситься все, вплоть до фотографий.

Как вариант - синхронизировать с гуглом.

конечно, CSV - аварийный вариант. и тут был именно этот случай. но все-равно не понятно, почему бы не довести поддержку CSV до ума.

Может кому пригодится...

Знакомому супруга на день рождения подарила новый телефон Nokia. За праздничным столом именинник у меня, как у единственного из присутствующих, связанного с IT, поинтересовался, - можно ли перекинуть в новый телефон контакты из из его старенького Sony Ericsson?

"Легко!" - ответил я. Операцию назначили на перерыв между холодными и горячими закусками.

Оказалось, что фирменный софт от Sony умеет выгружать контакты в Google. Зарегистрировались. Загрузили контакты на сервер. Сделали экспорт из Google в формате CSV для Outlook.

Импортировать полученный файл программа от NOKIA отказалась.

После перерыва на "горячее" вернулись к проблеме. В результате выяснилось:

  1. Разделителем должен быть знак "точка с запятой", а не "запятая", как в файле от Google.
  2. Текст с пробелами должен быть в кавычках.
  3. Имена полей из Google пришли английскими, а программа от Nokia ожидала русские! Это выяснилось, когда после многих попыток и нескольких дополнительных рюмок в программе для Nokia вручную завели контакт и выгрузили список контактов.
  4. И в конце, когда импорт пошел и первые полсотни контактов уже загрузились, операция опять "вылетела" с ошибкой. Оказалось, что в файле в именах людей встречались "переводы каретки"! Об них то и спотыкалась программа импорта.

Вот такие дела.

P.S. Засомневался: может в файле от Google разделителем была "точка с запятой" а поменяли на "запятую"? Ведь выпито было немало...

вывод: хорошо, когда за праздничным столом есть хотя бы один айтишник ;)

Хорошо, когда ИТ-шник - вообще попадает за стол, в таком случае.

 
 
IDC
Реклама

  •  Home  •  Рынок  •  ИТ-директор  •  CloudComputing  •  Hard  •  Soft  •  Сети  •  Безопасность  •  Наука  •  IoT