У меня есть экземпляр класса 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();
}
}
}