2016-11-16 3 views
0

Содержимое URL-адреса UTF-8, но когда я использую system.out строки, это не UTF-8. Как я могу преобразовать строку, чтобы она поддерживала utf-8? Я получаю некоторые слова, как это:Содержимое URL-адреса UTF-8, но когда я больше не строю строку, это не UTF-8.

Objectgeörienteerd 

Я пробовал такие вещи, как массивы байтов, inputstreams и т.д., но это не сработало.

Мой код:

HttpURLConnection connection = null; 
String thatUrl = url[0]; 
URL urly = new URL(thatUrl); 
InputStream is = urly.openStream(); 
final StringBuffer buffer = new StringBuffer(); 
int counter; 
while ((counter = is.read()) != -1) { 
    buffer.append((char) counter); 
} 
+0

Возможно, вы захотите использовать buffer.toString(). Вы также можете попробовать PrintStream out = новый PrintStream (System.out, true, «UTF-8»); out.println (буфер); поскольку он позволяет устанавливать кодировку. –

+0

@JohnMorrison Это не имеет никакого отношения к проблеме. – Kayaman

ответ

4

Вы читаете содержимое 1 байт в то время, с is.read(). Некоторые символы в UTF-8 имеют более 1 байт. Каждый раз, когда вы сталкиваетесь с одним из этих символов, вы разбиваете их, преобразовывая каждый отдельный байт в символ.

Простое решение, чтобы прочитать содержимое в byte[] (например, с помощью ByteArrayOutputStream), и когда у вас есть все байты, конвертировать их в String с new String(byteArray, "UTF-8");.

ByteArrayOutputStream out = new ByteArrayOutputStream(); 
int counter; 
byte[] buffer = new byte[1024]; // Let's read up to 1KB at a time, it's faster 
while((counter = is.read(buffer)) != -1) 
    out.write(buffer, 0, counter); 

// String output = new String(out.toByteArray(), "UTF-8"); 
String output = out.toString("UTF-8"); // Save an extra byte[] allocation 
+0

Nope not working :( – Jason

+0

Мой код, или ваш? Потому что, если мой код не работает, это намного серьезнее, чем просто ': ('. – Kayaman

+0

это не работает для меня, к сожалению :(Он все еще распечатывает его как странные символы – Jason

 Смежные вопросы

  • Нет связанных вопросов^_^