У меня есть входной файл в формате XML, и он хорошо сформирован, с хорошо написанными акцентами. Файл создается с помощью PHP-скрипта, который отлично работает. Но когда я читаю файл XML и записываю его в другой XML с помощью программы Java, вместо символов с акцентами вставляются странные символы.
Это метод, который читает файл XML:
public static String getArchivo(FileInputStream fileinputstream)
{
String s = null;
try
{
byte abyte0[] = new byte[1024];
int i = fileinputstream.read(abyte0);
if(i != -1)
{
s = new String(abyte0, 0, i);
for(int j = fileinputstream.read(abyte0); j != -1; j = fileinputstream.read(abyte0))
{
s = s + new String(abyte0, 0, j);
}
}
}
catch(IOException ioexception)
{
s = null;
}
return s;
}
Из-за того, что файл считывается побайтно, как заменить «плохие» байты на правильные байты для акцентированных символов? Если чтение таких файлов, как эти, байт за байтом, не является хорошей идеей, как я могу сделать это лучше?
Мне нужны следующие символы: á, é, í, ó, ú, Á, É, Í, Ó, Ú, ñ, Ñ и °.
заранее спасибо
InputStreamReader
, обертывающего вашInputStream
, и использование соответствующей кодировки - это путь. Внутренности считывателя будут правильно определять границы и избегать декодирования частичных символов, что может делать ваш текущий код. - person GPI   schedule 07.10.2015