MapSource. Garmin. Кодировка?

Подскажите, пожалуйста, есть ли какой-либо способ получить в Гармине (60CSx) для POI в поле Note/Заметки русский текст вместо вопросительных знаков? Закачиваю через MapSource. google не помог :roll_eyes:

http://www.gps-forum.ru/cgi-bin/forum/showpost.pl?Board=gpsgeneral&Number=106953&page=0&view=collapsed&sb=5

??? ???. ??? “???” MapSource->Garmin ??? “???”, Garmin->MS - “ÊÐÀÊÎÇßÁÐÀ”

Решил проблему написанием perl’овского постобработчика gpx-файлов, требуемое преобразование

$cmt=decode("utf8", $cmt);
$cmt=encode("cp".1251, $cmt);
$cmt=encode("utf8", $cmt);

, после которого получается файл с кракозябрами, но воспринимаемый Гармином. Если кому надо - стучитесь, выложу.
P.S. До чего-ж полезно знакомиться с новыми языками :stuck_out_tongue:

А можно алгоритм преобразования, т.е. вида:

cp1251 → utf8 и т.д.

Как для преобразования в utf8 скачанного из гармина gpx-файла (gpsbabel-ом), так и наоборот - для закачки в гармин.

enca (анализатор кодировки) говорит нечто невразумительное:

enca новые_треки.gpx

Universal transformation format 8 bits; UTF-8
Doubly-encoded to UTF-8 from ISO-8859-5

Ессно перекодировать из ISO в utf8 не получается. Пустое поле и всё выходит.

П.С. прошивка прибора как-то слишком круто. Так-то всё работает - только перекодировку добавить в скрипт скачивания треков и точек…

gpsbabel -t -w -i garmin -f usb: -o gpx -c 1251 -F - | iconv -f WINDOWS-1251 -t UTF-8 | sed -e ‘s/CP1251/UTF-8/g’

Но это не спасает от того, что последние буковки в названиях точек срезаются. (У меня так, по крайней мере, на висте hcx)/

Насколько я помню, проблема в том, что gpsbabel неправильно определяет родную кодировку прибора (cp1251), я лечил простым патчем:


--- garmin.c    2007-02-26 02:18:44.000000000 +0300
+++ garmin.c    2007-08-03 20:35:55.000000000 +0400
@@ -41,6 +41,7 @@
 static char *snwhiteopt = NULL;
 static char *deficon = NULL;
 static char *category = NULL;
+static char *encoding = NULL;
 
 #define MILITANT_VALID_WAYPT_CHARS "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
 
@@ -60,6 +61,8 @@
         NULL, ARGTYPE_BOOL, ARG_NOMINMAX},
     { "category", &category, "Category number to use for written waypoints", 
         NULL, ARGTYPE_INT, "1", "16"},
+    { "encoding", &encoding, "Override auto-detected encoding", 
+        NULL, ARGTYPE_STRING, ARG_NOMINMAX},
     ARG_TERMINATOR
 };
 
@@ -184,6 +187,17 @@
     }
 
     }
+
+    /*
+     * Encoding override
+     */
+    if (encoding) {
+        receiver_charset = encoding;
+        if (global_opts.debug_level > 0)
+            fprintf(stderr, "Encoding overrided to \"%s\"\n",
+                receiver_charset);
+    }
+
     /*
      * If the user provided a short_length, override the calculated value.
      */

после наложения кодировку надо указывать в параметрах и gpsbabel все нормально переводит в utf-8, по крайней мере в gpx и kml:


gpsbabel -t -w -i garmin,encoding=windows-1251 -f usb: -o gpx -F out.gpx

но maxcom с лора, говорит что можно и без патча обойтись http://dezhin.livejournal.com/15985.html?thread=56433#t56433, но я не пробовал.

Спасибо большое!
Буду пробовать.

Спасибо за патч!
Подкрутил его для версии 1.3.6 gpsbabel. Всё работает теперь!
Славно.
Запостил в gpsbabel:
http://sourceforge.net/tracker/?func=detail&aid=2937857&group_id=58972&atid=489477
Запостил на bugs.gentoo.org:
http://bugs.gentoo.org/show_bug.cgi?id=301898

Всем спасибо за помощь!
Будем надеяться, что патч примут и в следующих версиях бабела перекодировка будет работать “из коробки”.

Прикольно! Надеюсь он мне через портежи вернется!
Еще его кто-то в убунту постил, но там сказали постите в дебиан.

А вот я не поленился и поковырялся в исходниках. В общем, авторы запутались в собственном коде, и ключ -c нормально работает только при старом стиле задания входного и выходного файлов. Вот заливка вейпоинтов, работает из коробки:

gpsbabel -w -i gpx  -o garmin -f 20110716-17_plan.gpx -c windows-1251 -F /dev/ttyUSB0