Перейти к содержимому


Поддержка символов разных языков.


Сообщений в теме: 10

#1 b.o.w.

    Новичок

  • Пользователи
  • Pip
  • 11 сообщений

Отправлено 29 Октябрь 2011 - 19:15

Всем доброго времени суток.
------
Требуется:

Возможность отправки слов содержащих символы юникода, например, עִבְרִית , اللغة , español, Àà Èè Ìì Òò Ùù и Çç
В данный момент они приходят как ???????? , ????? , espa?ol, ?? ?? ?? ?? ?? и ?? , хотя сам icq клиент поддерживает юникод и напрямую присылает правильно.

Еще,например, если у меня нет возможности вставлять испанские символы, то я набираю "n+" и другие видят "ñ", "espan+ol" -> "español"

Так же, в одном чате могут находится те у кого icq клиент поддерживает юникод и те у кого не поддерживает, последние будут получат символы в виде вопросиков в любом случае "?? ?? ??"

Для них можно сделать возможность включения и отключения транслитерация, то есть когда им отправляют "n+", они видят просто "n", а не "ñ", так как у них не отображается этот символ. Каждый получает в чате сообщения от разных uin'ов бота, которые отправляют слова в соответствующей кодировке, выбранной пользователем.

-----

Понимаю, идея своеобразная, и можно просто ответить вопросом "а на куя?"

Но для меня остро встал вопрос реализации такой фичи в icq чате. И если кто решиться помочь - готов заплатить. Или может кто порекомендует кому можно обратиться за решением этого вопроса за вознаграждение?

Заранее спасибо за ответы.

#2 Maximus

    Специалист

  • Пользователи
  • PipPipPipPip
  • 334 сообщений
  • ГородВладимирская область

Отправлено 29 Октябрь 2011 - 20:17

Кодировку на бд поставь utf8_unicode_ci

Изначально я не стал прочитывать сообщение твое до конца поэтому изменяю-дополняю, это по мне не идея, а бред.
Фича? Неа, скорее способ выпендриться
Кто будет использовать данную "фичу"? Только ты и пара пользователей

Цитата

если у меня нет возможности вставлять испанские символы
Например у тебя в нике по испански что-то, испанский знают ооочень мало человек нашей расы. И будут лезть в переводчик?

Цитата

Для них можно сделать возможность включения и отключения транслитерация, то есть когда им отправляют "n+", они видят просто "n", а не "ñ", так как у них не отображается этот символ

По твоей логике если заменять "♥" на "<3" - какой ужс! Заставь себя и пользователей писать не символами этими, а альтернативами как ты хочешь заменить.= )

Сообщение отредактировал Maximus: 29 Октябрь 2011 - 21:13


#3 b.o.w.

    Новичок

  • Пользователи
  • Pip
  • 11 сообщений

Отправлено 29 Октябрь 2011 - 21:47

Ты прав, Максимус.

Поэтому предвидя ответы подобно твоему, я изначально писал в вопросе:

Цитата

Понимаю, идея своеобразная, и можно просто ответить вопросом "а на куя?"

Но для меня остро встал вопрос реализации такой фичи в icq чате. И если кто решиться помочь - готов заплатить. Или может кто порекомендует кому можно обратиться за решением этого вопроса за вознаграждение?

Но так как есть чат, где сидят люди, языки которых состоят из алфавита на основе кириллицы. Это и есть мой конкретный случай.
Вот, например, для примера возьмем один из них - татарский язык. Там есть все буквы кириллицы и плюс Ә ә, Ө ө, Ү ү, Җ җ, Ң ң, Һ һ.
Тут можно было сообщение "х+" заменить на "Һ", "Н+" -"Ң", а "О+" на "Ө" и тп.

Это и есть моя задача. Если кто согласен его реализовать за вознаграждение, буду рад.

Простите, если запостил не в ту ветку форума.

#4 scano

    Профи

  • Пользователи
  • PipPipPipPipPip
  • 571 сообщений
  • ГородМосква

Отправлено 30 Октябрь 2011 - 02:46

Если правильно понял мысль (у каждого пользователя должно отображаться сообщение на том языке/кодировке, который ему удобен для чтения и восприятия), то можно установить параметр для каждого пользователя, чтобы он выбирал языка/кодировки. Далее в коде отправки (или даже в самой либе icq) устанавливаем проверку языка/кодировки и в случае не соответствия перекодировываем и отсылаем.

#5 b.o.w.

    Новичок

  • Пользователи
  • Pip
  • 11 сообщений

Отправлено 30 Октябрь 2011 - 08:09

Цитата

Если правильно понял мысль (у каждого пользователя должно отображаться сообщение на том языке/кодировке, который ему удобен для чтения и восприятия), то можно установить параметр для каждого пользователя, чтобы он выбирал языка/кодировки. Далее в коде отправки (или даже в самой либе icq) устанавливаем проверку языка/кодировки и в случае не соответствия перекодировываем и отсылаем.

Точно!
.
Например, при входе, пользователь получает сообщения с дополнительными буквами, Ә ә, Ө ө, Ү ү, Җ җ, Ң ң, Һ һ. И подтверждает, видит ли он их или нет.
Соответственно с выбором будет получать сообщения в виде Ә ә, Ө ө, Ү ү, Җ җ, Ң ң, Һ һ или с транслитерацией, то есть с заменой на близкую по звучанию букву А а, О о, У у, Ж ж, Н н, х х если не поддерживает юникод.

Сообщение отредактировал b.o.w.: 30 Октябрь 2011 - 08:10


#6 ~ёМАё~

    Профи

  • Специалисты
  • PipPipPipPipPip
  • 817 сообщений
  • ГородТамбовская обл.

Отправлено 30 Октябрь 2011 - 11:25

Просмотр сообщенияb.o.w. (30 Октябрь 2011 - 08:09) писал:

Точно!
.
Например, при входе, пользователь получает сообщения с дополнительными буквами, Ә ә, Ө ө, Ү ү, Җ җ, Ң ң, Һ һ. И подтверждает, видит ли он их или нет.
Соответственно с выбором будет получать сообщения в виде Ә ә, Ө ө, Ү ү, Җ җ, Ң ң, Һ һ или с транслитерацией, то есть с заменой на близкую по звучанию букву А а, О о, У у, Ж ж, Н н, х х если не поддерживает юникод.
ну так в чем проблема
добавляеш массив
 public String[][] lng = {{"Н+","Ң"},
                           {"О+","Ө"}
                           /*и т.д.*/
                                     };    
и строку с заменой
/**
 * возвращает текст с заменой букв
 * @param str строка сообщения
 * @param lng массив с буквами языка
 * @param inversely в какую сторону менять
 * @return
 */          
 public String translit(String str, String[][] lng, boolean inversely){
        for(int i=0;i<lng.length;i++){
            str= inversely ? str.replace(lng[i][0],lng[i][1])
                           :
                             str.replace(lng[i][1],lng[i][0]);
        }

 return str;
  }
для пользователя который поддерживает юникод прогоняеш сообщения через
msg = translit(msg, lng, true);
для которых не поддерживают юникод
msg = translit(msg, lng, false);

массивов типо String[][] lng с разными языками можеш добавлять сколько угодно

public String translit будет работать с любым из них, указываеш нужный lng и все

Сообщение отредактировал ~ёМАё~: 30 Октябрь 2011 - 11:26


#7 b.o.w.

    Новичок

  • Пользователи
  • Pip
  • 11 сообщений

Отправлено 30 Октябрь 2011 - 23:19

Я далек от Java, и jimbot'e не ковырял ((

Можете подсказать где и куда добавить этот кусок кода? Или кому обратится, кто за вознаграждение помогает, что бы тут не флудить по каждой мелочи.

#8 scano

    Профи

  • Пользователи
  • PipPipPipPipPip
  • 571 сообщений
  • ГородМосква

Отправлено 31 Октябрь 2011 - 03:32

b.o.w., К ~ёМАё~ стучись.

#9 dim@X

    Хостер ICQ чатов

  • Пользователи
  • PipPipPipPipPip
  • 1 538 сообщений
  • ГородОрел

Отправлено 02 Ноябрь 2011 - 02:39

b.o.w а твоя библиотека то поддерживает ли юникод?

Сообщение отредактировал dim@X: 02 Ноябрь 2011 - 23:58


#10 spec

    Администратор

  • Администраторы
  • 2 399 сообщений
  • ГородКаменск-Уральский

Отправлено 02 Ноябрь 2011 - 21:17

Просмотр сообщенияdim@X (02 Ноябрь 2011 - 02:39) писал:

а библиотека то поддерживает ли юникод?
поддерживает

#11 Plolabima

    Новичок

  • Пользователи
  • Pip
  • 10 сообщений
  • ГородLondon

Отправлено 28 Ноябрь 2011 - 17:36

Это не самостоятельный браузер а надстройка над IE, так что поддерживает. Только я эти куки нафиг поотключал.
Я так понимаю что почему-то текущая сессия сбрасывается, потому что даже если уже открытую страницу с сидом обновить сразу гостем делает.





Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 скрытых пользователей