Java 字符看起来像“quot;”&引用;在读取上载文件的内容时

Java 字符看起来像“quot;”&引用;在读取上载文件的内容时,java,file-upload,java-io,r.java-file,Java,File Upload,Java Io,R.java File,我有一个上传文件的客户端,我在服务器端得到这个文件,读取它的内容并将它们保存到一个txt文件中。但当我尝试读取它时,出现了一个字符错误,如果有土耳其字符,它看起来像“?”。我的阅读代码如下: FileItemStream item = null; ServletFileUpload upload = new ServletFileUpload(); FileItemIterator iterator = upload.get

我有一个上传文件的客户端,我在服务器端得到这个文件,读取它的内容并将它们保存到一个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();
             }

如果这是生产代码,我建议直接将输出写入文件,而不要先将其累积到字符串中。而且,您可以通过将源代码作为InputStream读取并作为OutputStream写入(并跳过字符转换)来避免任何潜在的编码问题。

您的输入文件真的是UTF-8格式吗?那么,statist.txt中的编码是什么?我没有看到编码规范。创建的stat txt是ANSI格式的,我不知道如何使其UTF8See
BufferedWriter buf = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(f), "UTF-8"));