java веб-сканер не может распознать не английские символы
Я просмотрел список фильмов и сохранил их в своей базе данных. Все работает нормально для фильмов, которые содержат только английские символы, но проблема в том, что некоторые названия фильмов, которые содержат не английские символы, не могут отображаться правильно. Например, итальянский фильм "Il più rawle dei giorni" хранится как "Il pi ù ugrave; rawle dei giorni".
Может ли кто-нибудь любезно сообщить мне, если есть какое-либо решение? (Я знаю, что могу установить язык для сканера, я уже сканировал заголовки фильмов на итальянском языке, но когда я хочу сканировать английские заголовки, в Imdb все еще есть фильмы с неанглийскими символами)
РЕДАКТИРОВАТЬ: Вот мой код:
String baseUrl = "http://www.imdb.com/search/title?at=0&count=250&sort=num_votes,desc&start="+start+"&title_type=feature&view=simple";
label1: try {
org.jsoup.Connection con = Jsoup.connect(baseUrl).userAgent("Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.21 (KHTML, like Gecko) Chrome/19.0.1042.0 Safari/535.21").header("Accept-Language", "en");
con.timeout(30000).ignoreHttpErrors(true).followRedirects(true);
Response resp = con.execute();
Document doc = null;
if (resp.statusCode() == 200) {
doc = con.get();
Elements myElements = doc.getElementsByClass("results").first().getElementsByTag("table");
Elements trs = myElements.select(":not(thead) tr");
for (int i = 0; i < trs.size(); i++) {
Element tr = trs.get(i);
Elements tds = tr.select("td");
for (int j = 3; j < tds.size(); j++) {
Elements links = tds.select("a[href]");
String titleId = links.attr("href");
String movietitle = links.html();
//I ADDED YOUR CODE HERE
Charset c = Charset.forName("UTF-16BE");
ByteBuffer b = c.encode(movietitle);
for (int m = 0; b.hasRemaining(); m++) {
int charValue = (b.get()) & 0xff;
System.out.print((char) charValue);
}
// try{
// String query = "INSERT into test (movieName,ImdbId)" + "VALUES (?,?)";
// PreparedStatement preparedStmt = conn.prepareStatement(query);
// preparedStmt.setString (1, movietitle);
// preparedStmt.setString (2, titleId );
// }catch (Exception e)
// {
// e.printStackTrace();
// }
Спасибо,
1 ответ
Здесь я скопировал вставил строку в вопросе и попытался
public class Test {
public static void main (String...a) throws Exception {
String s = "Il più crudele dei giorni";
Charset c = Charset.forName("UTF-16BE");
ByteBuffer b = c.encode(s);
for (int i = 0; b.hasRemaining(); i++) {
int charValue = (b.get()) & 0xff;
System.out.print((char) charValue);
}
}
}
Это печатает s
как это на консоли. Я предполагаю, что у вас уже есть часть кода, которая пишет в файл. Вы можете попробовать интегрировать приведенный выше код, если он работает для вас.