Перейти к содержанию

Пара вопросов на тему "Инет для пользователя"


Рекомендуемые сообщения

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, софт свежий

Ссылка на комментарий
Поделиться на другие сайты

2. Не уверен, о том ли идет речь, но с какими протоколами Вы используете GAIM? У мя глюк с кириллицей, если пользовать его как ICQ - клиент, если же как Jabber - общение с виндозными клиентами не составляет проблем

Ссылка на комментарий
Поделиться на другие сайты

Цитата:

Будем ждать ответа...

Будем, но я - из чистого любопытства. Жаббер работает - и то ладно, а для АСИ мне и micq хватает Smile))

Ссылка на комментарий
Поделиться на другие сайты

Проблема с 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: а про конкверор так никто и не знает?..

Ссылка на комментарий
Поделиться на другие сайты

1. Касательно путей: попробуйте настроить локаль с KOI8-R

-- ...даже если это не приемлимо, попробуйте. Если будет

-- работать, будет ясно, что не так.

2. Я не понимаяю такой катигоричности касательно GAIM.

-- Почему Вы не хотите поставить тот же LIcq?

-- -- Проблему Вы решили, но на всякий случай, если Вы не совсем

-- -- поняли, что сделали (ну все бывает), поясню:

-- -- MS Windows (и ПО для него) работает приимущественно с

-- -- ихней же кириллической кодировкой CP-1251 в то время, как

-- -- в русскоязычных Linux, по большей части, используется

-- -- KOI8-R (это так же относится к путям для сайта).

Вернусь к вопросу о путях:

А для чего Вам русскоязычные имена файлов (директория - тоже

файл) в структуре сайта? По моему, кириллица так и не была

принята для доменных имен (и для описания url вообще), а

следовательно, Вам в любом случае, прийдется переименовывать

файлы... если только Вы не единственный человек, который должен

видеть этот сайт и только на локальном диске (или сетевом диске).

Ссылка на комментарий
Поделиться на другие сайты

Цитата:

По моему, кириллица так и не была принята для доменных имен (и для описания url вообще)

Была, но её почти никто не использует, т.к. нелатинские символы в URL по-любому передаются в шестнадцатиричных кодах.

Ссылка на комментарий
Поделиться на другие сайты

1. С локалью KOI-8 попробовать как раз не проблема... А вот что делать, если проблема именно в UTF-ной локали (вопрос пока гипотетический:))?

2. GAIM я пользуюсь потому что мне он нравиЦЦа. Имею право.

И, разумеется, я бы не стал менять программу, если бы не понимал что такое win-1251, koi-8 и UTF-8. Мне просто странно, что при таких наворотах с перекодировками как в приснопамятном oscar.с, с комментариями в духе "а вот эта перекодировка для дерьмовых клиентов, которые не могут нормально работать с нашим и будут злить пользователей Гэйма" Laughing, не работает простой вариант Gaim--аська-для-винды.

3. Русские пути нужны не для сайта, а для просмотра страниц ы офлайне. Например, мозилла сохраняет страницы в файле с именем как их заголовки (на русском) и их картинки в каталоге с таким же именем. Знакомый вариант? А потом открываем эти странички в конквероре в режиме менеджера файлов и они открываются в конквероре как браузере. Реальная ситуация с появлением путей на русском.

PS: я не зануда, просто моя мечта - сделать идеальную рабочую станцию на базе Linux Smile

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...