0

vcfファイルをアップロードするクライアントがあり、サーバー側でこのファイルを取得し、内容を読み取って txt ファイルに保存します。しかし、読んでみると文字エラーがあり、トルコ語の文字があると「?」のように見えます。私の読み取りコードは次のとおりです。

            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();
             }
4

1 に答える 1

1
BufferedWriter buf = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(f), "UTF-8"));

これが本番コードの場合は、出力をファイルに直接書き込み、最初に文字列に蓄積しないことをお勧めします。また、ソースをInputStreamとして読み取り、OutputStreamとして書き込む(そして文字への変換をスキップする)ことで、潜在的なエンコードの問題を回避できます。

于 2011-12-27T13:38:13.067 に答える