Конвертер из DOS-866 в WIN-1251
-
- Новоприбывший
- Сообщения: 10
- Зарегистрирован: 27 мар 2009, 12:10
- Репутация: 0
Конвертер из DOS-866 в WIN-1251
Нужны скрипт-конвертеры для перекодирования текстовых данных (кириллица) из DOS-866 (поддерживаемых Excel) в WIN-1251 (поддерживающихся ArcGIS)
- Denis Rykov
- Гуру
- Сообщения: 3376
- Зарегистрирован: 11 апр 2008, 21:09
- Репутация: 529
- Ваше звание: Author
- Контактная информация:
Re: Скрипт-конвертеры
Попробуйте этот.
- Вложения
-
doswin.rar
- (32.47 КБ) 3302 скачивания
Spatial is now, more than ever, just another column- The Geometry Column.
-
- Участник
- Сообщения: 76
- Зарегистрирован: 24 фев 2006, 14:33
- Репутация: 0
Re: Конвертер из DOS-866 в WIN-1251
ФАРом можно: открываешь файл на редактирование в одной кодировке, выделить всё, вырезать (Ctrl-X), переключить кодировку, вставить (Ctrl-V), сохранить.
-
- Участник
- Сообщения: 76
- Зарегистрирован: 24 фев 2006, 14:33
- Репутация: 0
Re: Конвертер из DOS-866 в WIN-1251
...только если это DBF-файл - заголовок в покое оставить.
-
- Новоприбывший
- Сообщения: 10
- Зарегистрирован: 27 мар 2009, 12:10
- Репутация: 0
Re: Конвертер из DOS-866 в WIN-1251
спасибо, воспользуюсь
-
- Гуру
- Сообщения: 852
- Зарегистрирован: 15 сен 2005, 13:19
- Репутация: 6
- Откуда: москва
- Контактная информация:
Re: Конвертер из DOS-866 в WIN-1251
Если вы работаете с шейп-файлами, и это именно их вы собираетесь перекодировать, то это не нужно. ГИС умеют работать с разными кодировками, в том числе, и в тандеме с Эксель. мало того, ГИС сами могут служить таким конвертором - если файл (таблица) единожды правильно открылся в ARcView или ArcMap, далее можно его записать в любой кодировке, какая вам подходит для Экселя или чего-либо еще. Читайте хелп по словам "Code page".
Подробнее работа с кодовыми таблицами описана здесь. Там же есть и более простое изложение, для начинающих.
Подробнее работа с кодовыми таблицами описана здесь. Там же есть и более простое изложение, для начинающих.
-
- Новоприбывший
- Сообщения: 10
- Зарегистрирован: 27 мар 2009, 12:10
- Репутация: 0
Re: Конвертер из DOS-866 в WIN-1251
Спасибо, "geologic". Я теперь делаю так: сохраняю файл xls, нахожу его в ArcCatalog, правой кнопкой мыши щелкаю, Экспорт - dBase (единичн.)..., указываю место выходной таблицы dbf - ВСЁ! нормальная таблица готова, без всяких искажений кириллицы. Здесь все уже предусмотрено и не надо в Экселе сохранять файл, как dBaseIV.
А если есть табилца dbf, а её нужно отправить в Эксель, то через Опции в том же ArcCatalog сохраняю файл, как текстовый. Он нормально открывается в Эксель, причем удобно, что можно там же, перед открытием выбрать формат файла и символ-разделитель. Таблица тоже не искажается. (примерно это и написано было в ссылке, на кот. Вы мне указали).
А если есть табилца dbf, а её нужно отправить в Эксель, то через Опции в том же ArcCatalog сохраняю файл, как текстовый. Он нормально открывается в Эксель, причем удобно, что можно там же, перед открытием выбрать формат файла и символ-разделитель. Таблица тоже не искажается. (примерно это и написано было в ссылке, на кот. Вы мне указали).
-
- Гуру
- Сообщения: 852
- Зарегистрирован: 15 сен 2005, 13:19
- Репутация: 6
- Откуда: москва
- Контактная информация:
Re: Конвертер из DOS-866 в WIN-1251
Кириллица не искажается и в Экселе, просто тот не умеет правильно указать Code Page при записи. Раньше умел когда-то, теперь разучился. В результате dbf идет c Codepage=0, и Arc его открывает неправильно. Можно просто Code байт править, можно каталог для обмена объявить как DOS866, чтоб без лишних перегонок, вариантов много. Если туда-сюда гоняете, лучше всего через Access или ODBC соединить свой эксель, но когда много файлов, это неудобно, ясное дело.
-
- Новоприбывший
- Сообщения: 11
- Зарегистрирован: 24 дек 2008, 21:53
- Репутация: 0
Re: Конвертер из DOS-866 в WIN-1251
Хм... возник вопрос ребром..
Есть dbf файл с атрибутикой на речную сеть. Названия рек сурово покорёжены...
Пробовал всё: и менять 29 байт, и в реестр и алл зе рест...
Результат нулевой...
Можно что-либо сделать?
Готов лаже отправить сей фал по почте, может кто сможет помочь...
Заранее спасибо.
Есть dbf файл с атрибутикой на речную сеть. Названия рек сурово покорёжены...
Пробовал всё: и менять 29 байт, и в реестр и алл зе рест...
Результат нулевой...
Можно что-либо сделать?
Готов лаже отправить сей фал по почте, может кто сможет помочь...
Заранее спасибо.
-
- Гуру
- Сообщения: 810
- Зарегистрирован: 22 авг 2007, 14:58
- Репутация: 123
- Откуда: Казань
Re: Конвертер из DOS-866 в WIN-1251
Не очень понятно, что значит сурово покорежены. Если дело просто в кодировке, то решается легко, аналогичная тема была тут.Jerry писал(а): Есть dbf файл с атрибутикой на речную сеть. Названия рек сурово покорёжены...
Если дело не в кодировке, то слишком мало информации в описании проблемы.
-
- Новоприбывший
- Сообщения: 11
- Зарегистрирован: 24 дек 2008, 21:53
- Репутация: 0
Re: Конвертер из DOS-866 в WIN-1251
Исходно дано:
1. Windows XP Pro SP3 Rus
2. ArcGIS 9.2 SP6
3. dbf. файл
Вот так выглядит типовое название реки если использовать разные кодировки (смотрю через программу CDBF)
?рфRч?c ANSI
?°ЄRі?c OEM
Т.е. кодировку то он меняет. Проблема в том, что ни ANSI ни OEM не приводят к результату.
1. Windows XP Pro SP3 Rus
2. ArcGIS 9.2 SP6
3. dbf. файл
Вот так выглядит типовое название реки если использовать разные кодировки (смотрю через программу CDBF)
?рфRч?c ANSI
?°ЄRі?c OEM
Т.е. кодировку то он меняет. Проблема в том, что ни ANSI ни OEM не приводят к результату.
-
- Гуру
- Сообщения: 977
- Зарегистрирован: 27 янв 2009, 22:57
- Репутация: 258
Re: Конвертер из DOS-866 в WIN-1251
Тут несколько вариантов:
1. Битый файл
- восстанавливается старинными программами типа foxbase или утилита восстановления dbf в norton comander.
2. Вариант кодировки не 1251, и не 866 а например utf8
- для этого использую visual foxpro 9.0 он поддерживает около 20 типов кодировок
Короче выкладывайте файл или отправляйте на мыло.
1. Битый файл
- восстанавливается старинными программами типа foxbase или утилита восстановления dbf в norton comander.
2. Вариант кодировки не 1251, и не 866 а например utf8
- для этого использую visual foxpro 9.0 он поддерживает около 20 типов кодировок
Короче выкладывайте файл или отправляйте на мыло.
Последний раз редактировалось bim2010 03 июл 2009, 09:58, всего редактировалось 1 раз.
-
- Новоприбывший
- Сообщения: 11
- Зарегистрирован: 24 дек 2008, 21:53
- Репутация: 0
Re: Конвертер из DOS-866 в WIN-1251
Собственно файл.
Буду признателен за любую помощь
При попытке скормить его питовскому скрипту из темы, указанной выше, при
варианте win1251 -> UTF рабоатет, но итог всё равно крякозярбы
А наоборот -- вываливается с ошибкой:
Буду признателен за любую помощь
При попытке скормить его питовскому скрипту из темы, указанной выше, при
варианте win1251 -> UTF рабоатет, но итог всё равно крякозярбы
А наоборот -- вываливается с ошибкой:
Код: Выделить всё
Traceback (most recent call last):
File "C:\Python24\conv.py", line 18, in ?
f=unicode(f,'utf-8')
UnicodeDecodeError: 'utf8' codec can't decode bytes in position 1-4: invalid data
- Вложения
-
hydro_l.rar
- 5 мегабайт радости;)
- (4.95 МБ) 863 скачивания
-
- Гуру
- Сообщения: 977
- Зарегистрирован: 27 янв 2009, 22:57
- Репутация: 258
Re: Конвертер из DOS-866 в WIN-1251
У меня результат перекодировки отрицательный.
Пробовал по XP и linux. База не битая, но и не отображается корректно.
Кроме кодовой страницы другой важный параметр locale
Смотрим MSDN:
Я проверял только на locale 1049 - Россия. Чтобы копать дальше, надо знать страну - источник данных и их locale. Хотя я могу и ошибаться, и данные просто защищены - тогда перебор locale ничего не даст.
Пробовал по XP и linux. База не битая, но и не отображается корректно.
Кроме кодовой страницы другой важный параметр locale
Смотрим MSDN:
Код: Выделить всё
Converts character expressions between single-byte, double-byte, UNICODE, and locale-specific representations.
STRCONV(cExpression, nConversionSetting [, nRegionalIdentifier [, nRegionalIDType]])
Parameters
cExpression
Specifies the character expression that STRCONV( ) converts.
nConversionSetting
Specifies the type of conversion. The following table lists the values of nConversionSetting and the type of conversion performed.
nConversionSetting Conversion
1 Converts single-byte characters in cExpression to double-byte characters.
Supported for Locale ID only (specified with the nRegionalIdentifier or nRegionalIDType parameters).
2 Converts double-byte characters in cExpression to single-byte characters.
Supported for Locale ID only (specified with the nRegionalIdentifier or nRegionalIDType parameters).
3 Converts double-byte Katakana characters in cExpression to double-byte Hiragana characters.
Supported for Locale ID only (specified with the nRegionalIdentifier or nRegionalIDType parameters).
4 Converts double-byte Hiragana characters in cExpression to double-byte Katakana characters.
Supported for Locale ID only (specified with the nRegionalIdentifier or nRegionalIDType parameters).
5 Converts double-byte characters to UNICODE (wide characters).
6 Converts UNICODE (wide characters) to double-byte characters.
7 Converts cExpression to locale-specific lowercase.
Supported for Locale ID only (specified with the nRegionalIdentifier or nRegionalIDType parameters).
8 Converts cExpression to locale-specific uppercase.
Supported for Locale ID only (specified with the nRegionalIdentifier or nRegionalIDType parameters).
9 Converts double-byte characters in cExpression to UTF-8
10 Converts Unicode characters in cExpression to UTF-8
11 Converts UTF-8 characters in cExpression to double-byte characters.
12 Converts UTF-8 characters in cExpression to UNICODE characters.
13 Converts single-byte characters in cExpression to encoded base64 binary.
14 Converts base64 encoded data in cExpression to original unencoded data.
15 Converts single-byte characters in cExpression to encoded hexBinary.
16 Converts single-byte characters in cExpression to decoded hexBinary.
nRegionalIdentifier
Specifies the Locale ID, code page, or FontCharSet value to use for the conversion. If nRegionalIDType is omitted, the Locale ID is used for the conversion. If nRegionalIdentifier is omitted, the system locale ID is used by default. If nRegionalIdentifier is invalid or not supported on the machine, the error "Invalid locale ID" is generated.
nRegionalIdentifier Language
1029 Czech
1031 German
1033 English (Default)
1034 Spanish
1036 French
1040 Italian
1045 Polish
1046 Portuguese (Brazil)
2070 Portuguese (Portugal)
nRegionalIDType
Specifies if a Locale ID, code page, or FontCharSet is used for the conversion. The nRegionalIdentifier parameter, described above, is used to specify the actual Locale ID, code page, or FontCharSet used for the conversion.
nRegionalIDType Description
0 (Default) Specifies that the nRegionalIdentifier parameter is a Locale ID value.
1 Specifies that nRegionalIdentifier is a code page value.
2 Specifies that nRegionalIdentifier is a FontCharSet value.
Return Value
Character data type. STRCONV( ) returns the converted character expression.
-
- Новоприбывший
- Сообщения: 11
- Зарегистрирован: 24 дек 2008, 21:53
- Репутация: 0
Re: Конвертер из DOS-866 в WIN-1251
истоник данных неизвестен...
подозреваю, что всё таки Россия...
скорее всего сама база создавалась ещё во времена ArcView
подозреваю, что всё таки Россия...
скорее всего сама база создавалась ещё во времена ArcView
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 3 гостя