Кроме того, то, что предлагает Зак Скривена, также верно: вы не можете предполагать, что таким образом вы можете создавать строки из кусков данных - либо используйте InputStreamReader, либо сначала считывайте полные данные в массив (очевидно, не будет работать для большого файла) , Однако, поскольку он, похоже, работает на XP, я рискну предположить, что в данном конкретном случае это, вероятно, не ваша проблема.
я есть файл, который закодирован как ISO-8859-1 и содержит такие символы, как ô.
Я читаю этот файл с кодом Java, что-то вроде:
File in = new File("myfile.csv");
InputStream fr = new FileInputStream(in);
byte[] buffer = new byte[4096];
while (true) {
int byteCount = fr.read(buffer, 0, buffer.length);
if (byteCount <= 0) {
break;
}
String s = new String(buffer, 0, byteCount,"ISO-8859-1");
System.out.println(s);
}
Однако символ ô всегда искажен, обычно печатается как? ,
Я прочитал вокруг предмета (и немного узнал в пути), например.
http://www.joelonsoftware.com/articles/Unicode.htmlhttp://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4508058http://www.ingrid.org/java/i18n/utf-16/но до сих пор не могу заставить это работать
Интересно, что это работает на моем локальном компьютере (xp), но не на моей Linux-коробке.
Я проверил, что мой jdk поддерживает необходимые кодировки (они стандартные, так что это не удивительно), используя:
System.out.println(java.nio.charset.Charset.availableCharsets());