Пингвинчик Опубликовано 9 марта, 2005 Жалоба Опубликовано 9 марта, 2005 1) Konqueror неправильно показывает скачанные страницы. Например, есть каталог "Мой сайт", в котором лежит index.html, содержащий тег <img src="picture.jpg">. picture.jpg находится в том же каталоге. При открытии index.html картинка не видна. Когда щелкаешь показать катринку, ругается что путь не найден и показывает путь к picture.jpg, где вместо "Мой сайт" двухсимвольные знаки (лакаль UTF-8). При путях на аглицком все ок. Каталог "Мой сайт" создан хоть в линуксе, хоть на подмонтированных виндовых - без разницы. В диалогах Konqueror'а все пути и имена на русском отображаются корректно. Вот. 2) Gaim не получает сообщения на русском. Отправляет отлично: собеседник все видит, может присылать ответы аглицкими буквами. Напишет русскими - вместо текста сообщение об ошибке. Точно сейчас не передам, но насчет того, что язык клиента не тот. Это касается клиентов под виндой. Два gaim'а же общаются без проблем. В линуксе, как можно догадаться по вопросу №1, локаль UTF-8. Можно чем-то настроить, или придется брать исходники и самому лазить в сишных текстах? Есть способ легче или готовое решение? PS: ставить что-то кроме гэйма не буду, надо править что есть. ---- PPS: система дженту на 2.6, софт свежий Цитата
Ineu Опубликовано 9 марта, 2005 Жалоба Опубликовано 9 марта, 2005 2. Не уверен, о том ли идет речь, но с какими протоколами Вы используете GAIM? У мя глюк с кириллицей, если пользовать его как ICQ - клиент, если же как Jabber - общение с виндозными клиентами не составляет проблем Цитата
Пингвинчик Опубликовано 9 марта, 2005 Автор Жалоба Опубликовано 9 марта, 2005 Значит нас уже двое Будем ждать ответа... Цитата
Ineu Опубликовано 9 марта, 2005 Жалоба Опубликовано 9 марта, 2005 Цитата: Будем ждать ответа... Будем, но я - из чистого любопытства. Жаббер работает - и то ладно, а для АСИ мне и micq хватает )) Цитата
Пингвинчик Опубликовано 12 марта, 2005 Автор Жалоба Опубликовано 12 марта, 2005 Проблема с gaim решилась. К сожалению, я не нашел патча для своей версии 1.0.2, только для 0.75 и для какой-то годичной давности с CVS... Но они какие-то здоровенные и старые и я ими не рискнул воспользоваться. Посмотрел только в каком файле надо копаться. Итак, чтобы заставить аську работать, я сделал следующее: нашел в файле gaim-1.0.2/src/protocols/oscar/oscar.c следующую функцию: static gchar * oscar_encoding_to_utf8(const char *encoding, const char *text, int textlen) { gchar *utf8 = NULL; if ((encoding == NULL) || encoding[0] == '\0') { gaim_debug_info("oscar", "Empty encoding, assuming UTF-8\n"); } else if (!strcmp(encoding, "iso-8859-1") || !strcmp(encoding, "ISO-8859-1-Windows-3.1-Latin-1")) { utf8 = g_convert(text, textlen, "UTF-8", "ISO-8859-1", NULL, NULL, NULL); } else if (!strcmp(encoding, "unicode-2-0")) { utf8 = g_convert(text, textlen, "UTF-8", "UCS-2BE", NULL, NULL, NULL); } else if (strcmp(encoding, "us-ascii") && strcmp(encoding, "utf-8")) { gaim_debug_warning("oscar", "Unrecognized character encoding \"%s\", " "attempting to convert to UTF-8 anyway\n", encoding); utf8 = g_convert(text, textlen, "UTF-8", encoding, NULL, NULL, NULL); } /* * If utf8 is still NULL then either the encoding is us-ascii/utf-8 or * we have been unable to convert the text to utf-8 from the encoding * that was specified. So we check if the text is valid utf-8 then * just copy it. */ if (utf8 == NULL) { if (textlen != 0 && *text != '\0' && !g_utf8_validate(text, textlen, NULL)) utf8 = g_strdup(_("(There was an error receiving this message. The buddy you are speaking to most likely has a buggy client.)")); else utf8 = g_strndup(text, textlen); } return utf8; } и изменил ее следующим образом: static gchar * oscar_encoding_to_utf8(const char *encoding, const char *text, int textlen) { gchar *utf8 = NULL; if ((encoding == NULL) || encoding[0] == '\0') { gaim_debug_info("oscar", "Empty encoding, assuming UTF-8\n"); } else if (!strcmp(encoding, "iso-8859-1") || !strcmp(encoding, "ISO-8859-1-Windows-3.1-Latin-1")) { utf8 = g_convert(text, textlen, "UTF-8", "ISO-8859-1", NULL, NULL, NULL); } else if (!strcmp(encoding, "unicode-2-0")) { utf8 = g_convert(text, textlen, "UTF-8", "UCS-2BE", NULL, NULL, NULL); } else if (!strcmp(encoding, "win-1251")) { utf8 = g_convert(text, textlen, "UTF-8", "WIN-1251", NULL, NULL, NULL); } else if (strcmp(encoding, "us-ascii") && strcmp(encoding, "utf-8")) { gaim_debug_warning("oscar", "Unrecognized character encoding \"%s\", " "attempting to convert to UTF-8 anyway\n", encoding); utf8 = g_convert(text, textlen, "UTF-8", encoding, NULL, NULL, NULL); } /* * If utf8 is still NULL then either the encoding is us-ascii/utf-8 or * we have been unable to convert the text to utf-8 from the encoding * that was specified. So we check if the text is valid utf-8 then * just copy it. */ if (utf8 == NULL) { /*if (textlen != 0 && *text != '\0' && !g_utf8_validate(text, textlen, NULL)) utf8 = g_strdup(_("(There was an error receiving this message. The buddy you are speaking to most likely has a buggy client.)")); else*/ utf8 = g_strndup(text, textlen); } return utf8; } Я не знаю, какое из двух изменений помогло: условие на win-1251 или что вместо ошибки возвращается неизмененный текст, да мне это и неинтересно: код, как видите, тот еще - с искусственными ограничениями (видно, писали с бодуна). PS: дистры на исходниках рулят! PPS: а про конкверор так никто и не знает?.. Цитата
Ineu Опубликовано 13 марта, 2005 Жалоба Опубликовано 13 марта, 2005 Цитата: дистры на исходниках рулят! Воистину рулят! Цитата
Hans R. Steiner Опубликовано 15 марта, 2005 Жалоба Опубликовано 15 марта, 2005 1. Касательно путей: попробуйте настроить локаль с KOI8-R -- ...даже если это не приемлимо, попробуйте. Если будет -- работать, будет ясно, что не так. 2. Я не понимаяю такой катигоричности касательно GAIM. -- Почему Вы не хотите поставить тот же LIcq? -- -- Проблему Вы решили, но на всякий случай, если Вы не совсем -- -- поняли, что сделали (ну все бывает), поясню: -- -- MS Windows (и ПО для него) работает приимущественно с -- -- ихней же кириллической кодировкой CP-1251 в то время, как -- -- в русскоязычных Linux, по большей части, используется -- -- KOI8-R (это так же относится к путям для сайта). Вернусь к вопросу о путях: А для чего Вам русскоязычные имена файлов (директория - тоже файл) в структуре сайта? По моему, кириллица так и не была принята для доменных имен (и для описания url вообще), а следовательно, Вам в любом случае, прийдется переименовывать файлы... если только Вы не единственный человек, который должен видеть этот сайт и только на локальном диске (или сетевом диске). Цитата
EL[michlen] Опубликовано 15 марта, 2005 Жалоба Опубликовано 15 марта, 2005 Цитата: По моему, кириллица так и не была принята для доменных имен (и для описания url вообще) Была, но её почти никто не использует, т.к. нелатинские символы в URL по-любому передаются в шестнадцатиричных кодах. Цитата
Пингвинчик Опубликовано 15 марта, 2005 Автор Жалоба Опубликовано 15 марта, 2005 1. С локалью KOI-8 попробовать как раз не проблема... А вот что делать, если проблема именно в UTF-ной локали (вопрос пока гипотетический)? 2. GAIM я пользуюсь потому что мне он нравиЦЦа. Имею право. И, разумеется, я бы не стал менять программу, если бы не понимал что такое win-1251, koi-8 и UTF-8. Мне просто странно, что при таких наворотах с перекодировками как в приснопамятном oscar.с, с комментариями в духе "а вот эта перекодировка для дерьмовых клиентов, которые не могут нормально работать с нашим и будут злить пользователей Гэйма" , не работает простой вариант Gaim--аська-для-винды. 3. Русские пути нужны не для сайта, а для просмотра страниц ы офлайне. Например, мозилла сохраняет страницы в файле с именем как их заголовки (на русском) и их картинки в каталоге с таким же именем. Знакомый вариант? А потом открываем эти странички в конквероре в режиме менеджера файлов и они открываются в конквероре как браузере. Реальная ситуация с появлением путей на русском. PS: я не зануда, просто моя мечта - сделать идеальную рабочую станцию на базе Linux Цитата
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.