Персонаж выглядит как "?"при чтении содержимого загруженного файла - PullRequest
0 голосов
/ 27 декабря 2011

У меня есть клиент, который загружает файл vcf , и я получаю этот файл на стороне сервера, считываю его содержимое и сохраняю его в текстовый файл. Но когда я пытаюсь прочитать его, возникает ошибка символа, если есть турецкие символы, они выглядят как «?». Мой прочитанный код здесь:

            FileItemStream item = null;
            ServletFileUpload upload = new ServletFileUpload();
            FileItemIterator iterator = upload.getItemIterator(request);
            String encoding = null;
            while (iterator.hasNext()) {
                item = iterator.next();
                if ("fileUpload".equals(item.getFieldName())) {
                    InputStreamReader isr = new InputStreamReader(item.openStream(), "UTF-8");
                    String str = "";
                    String temp="";
                    BufferedReader br = new BufferedReader(isr);
                    while((temp=br.readLine()) != null){
                        str +=temp; 
                    }
                    br.close();
                    File f = new File("C:/sedat.txt");
                    BufferedWriter buf = new BufferedWriter(new FileWriter(f));
                    buf.write(str);
                    buf.close();
             }

1 Ответ

1 голос
/ 27 декабря 2011
BufferedWriter buf = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(f), "UTF-8"));

Если это рабочий код, я бы порекомендовал записать вывод прямо в файл, а не накапливать его сначала в строке. И вы можете избежать любых потенциальных проблем с кодированием, читая источник как InputStream и записывая как OutputStream (и пропуская преобразование в символы).

...