Что ж, прошло уже много времени с тех пор, как я теряю голову этим.Я пока не могу найти решение.Я много чего пробовал, но ничего не получается, поэтому я хотел бы спросить, как это сделать.И извините за плохой английский.
Я загружаю файл в веб-приложение JSP.Я использую некоторый плагин jQuery File Upload, но я не думаю, что это является ядром проблемы (я не отбрасываю, но ... файл загружен во временную папку, и это нормально).В любом случае, файл выглядит как это , и, как вы можете видеть, кодировка соответствует ISO-8859-3.
Я получаю данные следующим образом:
request.setCharacterEncoding("UTF-8");
if (ServletFileUpload.isMultipartContent(request)) {
ServletFileUpload servletFileUpload = new ServletFileUpload(new DiskFileItemFactory());
List fileItemsList = servletFileUpload.parseRequest(request);
Iterator it = fileItemsList.iterator();
if (fileItemsList.size() > 0) {
while (it.hasNext()) {
FileItem fileItem = (FileItem) it.next();
if (!fileItem.isFormField()) {
String nomCompleto = fileItem.getName();
saveFile = nomCompleto.substring(nomCompleto.lastIndexOf(separador) + 1).trim();
String ext = saveFile.substring(saveFile .lastIndexOf("."), saveFile.length());
if (ext.equalsIgnoreCase(".csv") || ext.equalsIgnoreCase(".txt")) {
fguarda = new File(ruta + saveFile);
fguarda.delete();
fileItem.write(fguarda);
ArrayList<String> lineas = FuncionesGenericas.leerArchivoUTF8(fguarda.getAbsolutePath());
Может быть, это может быть проблемой.Request.setCharacterEncoding ("UTF-8") был чем-то отчаянным, и я действительно не знаю, стоит ли мне его удалять.Но, как я уже сказал, это не имеет значения, файл загружен в исходную кодировку.
Я делаю тест для нового проекта с похожим методом, подобным тому, который извлекает строки и помещает их в массив (FuncionesGenericas.leerArchivoUTF-8), и где я пытаюсьпарсит каждую строку из ISO-8859-3 в UTF-8, но, похоже, ничего не работает.Я всегда получаю "?"вместо "á".
try {
ArrayList<String> lineas = new ArrayList();
FileReader fr;
fr = new FileReader("C:\\Personal\\temp\\ffffff.txt");
BufferedReader in = new BufferedReader(fr);
String s;
while ((s = in.readLine()) != null) {
String UTF8Str = new String(s.getBytes("ISO-8859-3"), "UTF-8");
String intento2 = new String(s.getBytes(Charset.forName("ISO-8859-3")), Charset.forName("UTF-8"));
System.out.println("UTF8Str = " + UTF8Str);
System.out.println("intento2 = " + intento2);
lineas.add(UTF8Str);
}
} catch (Exception e) {
System.out.println("e = " + e);
}
Итак, я в основном пытаюсь разобрать строки из файла и сохранить их в массиве, но с другой кодировкой, я надеюсь, что кто-то может мне немного помочь,Я не знаю, можете ли вы порекомендовать мне другой способ сделать это.Я много чего перепробовал и ничего не получалось.Заранее спасибо!