кодировка символов - PullRequest
       18

кодировка символов

0 голосов
/ 23 марта 2020

У меня есть экземпляр класса pricbotx, который подключается к серверу ir c и прослушивает сообщения. У меня есть некоторый код для перехвата сообщений, являющихся ссылками, и ответ бота с заголовком из этого URL. Но у меня есть некоторые проблемы с кодировкой. Когда я отправляю на канал URL-адрес с заголовком на греческом языке, он отвечает неизвестными символами, подобными этим

ΡϤοκΠ± Ξ »Ο? Ο? Ξ? ΞΉΟ? Ξ? ΞΟ? ΞΏΞ½Ο?.

Сервер, подключающий бота, имеет набор символов UTF-8. В той же конфигурации есть бот. Почему это происходит и какие изменения я должен сделать с код?

import java.net.URL;
import java.io.IOException;
import java.io.InputStream;
import java.util.Scanner;
import org.pircbotx.Channel;
import org.pircbotx.Configuration;
import org.pircbotx.PircBotX;
import org.pircbotx.exception.DaoException;
import org.pircbotx.exception.IrcException;
import org.pircbotx.hooks.ListenerAdapter;
import org.pircbotx.hooks.events.ConnectEvent;
import org.pircbotx.hooks.events.ModeEvent;
import org.pircbotx.hooks.types.GenericMessageEvent;
import java.net.URLConnection;
import java.nio.charset.Charset;

public class setTitle extends ListenerAdapter {

static Charset myChar = Charset.forName("UTF-8");

public setTitle() {

}

@Override
public void onGenericMessage(GenericMessageEvent event) {

    InputStream response = null;
    if ((event.getMessage().startsWith("http://") || (event.getMessage().startsWith("https://")))) {
        try {
            URL myUrl = new URL(event.getMessage());
            response = new URL(String.valueOf(myUrl).toString()).openStream();
            Scanner scanner = new Scanner(response);
            String responseBody = scanner.useDelimiter("\\A").next();
            String title = responseBody.substring(responseBody.indexOf("<title>") + 7, responseBody.indexOf("</title>"));
            event.respondWith(title);
        } catch (IOException ex) {
            ex.printStackTrace();
        } finally {
            try {
                response.close();
            } catch (IOException ex) {
                ex.printStackTrace();
            }
          }
        }
      } 

public static void main(String[] args) throws Exception {
    //Configure what we want our bot to do
    Configuration configuration = new Configuration.Builder()
            .setName("myname")
            .addServer("myserver") 
            .setNickservPassword("mypassword")
            .addAutoJoinChannel("#mychannel") 
            .addListener(new setTitle())//Add our listener that will be called on Events
            .setEncoding(myChar) 
            .buildConfiguration();
    try {
        PircBotX bot = new PircBotX(configuration);
        bot.startBot();
    }catch (DaoException | IOException | IrcException ex) {
        ex.printStackTrace();
    }

}

}

...