2015-02-02 6 views
3

다음 코드는 영어 내용이 완벽하게 있지만 러시아어 내용이없는 파일에서 작동합니다. 러시아어에서도 잘 작동시키는 법?파일에서 읽기 러시아어 (javaSE)

try(BufferedReader fileOut = new BufferedReader(new FileReader(file))){ 

     for(String line; (line = fileOut.readLine()) != null;){ 
      if(line.contains(commandString)) 
       System.out.println(count + ": " + line); 
      count++; 
     } 

    } 

는 UPD : 나는 시도

가 작성하는이 단지 작품을 선 예를 들어, 다음 출력을 하나의 단어가 포함되어있는 경우 : 라인이 두 개 이상의 단어가 전혀 출력되지 않습니다 포함되어있는 경우 "привет" 예를 들어 "привет как дела"에 대한

new BufferedReader(new InputStreamReader(new FileInputStream(file), "Cp1251")) 

PS : 답변

당신은 encodin를 지정해야
+5

미정 : HTTP : // 유래. com/questions/696626/java-filereader-encoding-issue –

+0

내 첫 번째 추측은'commandString' 값의 코드 페이지가 파일 내용의 코드 페이지와 일치하지 않는다는 것입니다. 샘플 데이터와 같은 정보를 더 제공해야합니다. – mustaccio

+0

파일은 어떤 문자 인코딩을 사용합니까? – Philipp

답변

2

에 대한 감사합니다 아주 많이 g 러시아 문자를 읽을 수 있습니다. FileReader은 기본 플랫폼 인코딩을 사용하므로 사용하지 마십시오.

대신 모든 언어에서 모든 파일의 파일 내용을 읽는 방법 아래

new BufferedReader(new InputStreamReader(fileDir), "UTF8"); 
+0

필자는 다음과 같은 내용을 작성하려고 시도했습니다.이 줄은 한 줄만 포함하고 출력 할 때만 작동합니다 (예 : "привет") 한 줄에 둘 이상의 단어가 포함되어 있으면 "привет как дела"와 같은 출력이 없습니다. ** new BufferedReader (new InputStreamReader (새로운 FileInputStream (file), "Cp1251")) ** –

0

사용을 사용합니다. FileUtil.java를 만들었으므로이 메서드는 그 일부입니다.

BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(file), "UTF8")) 

전체 방법은 다음과 같습니다 : 그것의 편리하고 잘 작동합니다 ...

그리고 작업 코드의 핵심은 캐릭터 세트입니다

public static String getFileContent(File file) throws IOException 
    { 
     StringBuilder sb = new StringBuilder(); 
     try (BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(file), "UTF8"))) { 

      String sCurrentLine; 

      while ((sCurrentLine = br.readLine()) != null) { 
       System.out.println(sCurrentLine); 
       sb.append(sCurrentLine); 
      } 

     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     return sb.toString(); 
    }