2011-12-27 2 views
0

vcf 파일을 업로드하는 클라이언트가 있는데이 파일을 서버 쪽에서 가져 와서 내용을 읽고이를 txt 파일에 저장합니다. 그러나 터키 문자가 있으면 "?"와 같이 보이는 문자 읽기 오류가 있습니다. 내 읽기 코드는 여기에 있습니다 :이 생산 코드 인 경우캐릭터는 "?"처럼 보입니다. at 업로드 된 파일의 내용 읽기에서

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

입력 파일이 실제로 UTF-8입니까? –

+0

예, UTF-8입니다. –

+0

그런 다음 sedat.txt의 인코딩은 무엇입니까? 인코딩 사양이 표시되지 않습니다. –

답변

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

, 내가 먼저 문자열에 축적 파일로 바로 출력을 작성하지 추천 할 것입니다. 그리고 소스를 InputStream으로 읽고 OutputStream으로 쓰고 (그리고 문자로 변환하지 않고) 인코딩 문제를 피할 수 있습니다.