java.io.FileReader를 사용하여 일부 텍스트 파일을 읽고 문자열로 변환하려고 시도했지만 결과가 잘못 인코딩되어 읽을 수 없다는 것을 알았습니다.
내 환경은 다음과 같습니다.
Windows 2003, OS 인코딩 : CP1252
자바 5.0
내 파일은 UTF-8로 인코딩되거나 CP1252로 인코딩되며 일부 (UTF-8로 인코딩 된 파일)에는 중국어 (라틴 문자가 아닌) 문자가 포함될 수 있습니다.
다음 코드를 사용하여 작업을 수행합니다.
private static String readFileAsString(String filePath)
throws java.io.IOException{
StringBuffer fileData = new StringBuffer(1000);
FileReader reader = new FileReader(filePath);
//System.out.println(reader.getEncoding());
BufferedReader reader = new BufferedReader(reader);
char[] buf = new char[1024];
int numRead=0;
while((numRead=reader.read(buf)) != -1){
String readData = String.valueOf(buf, 0, numRead);
fileData.append(readData);
buf = new char[1024];
}
reader.close();
return fileData.toString();
}
위의 코드는 작동하지 않습니다. 텍스트가 UTF-8로 인코딩 된 경우에도 FileReader의 인코딩이 CP1252라는 것을 알았습니다. 그러나 java.io.FileReader의 JavaDoc은 다음과 같이 말합니다.
이 클래스의 생성자는 기본 문자 인코딩과 기본 바이트 버퍼 크기가 적절하다고 가정합니다.
FileReader를 사용하는 경우 직접 문자 인코딩을 설정할 필요가 없다는 의미입니까? 그러나 현재 잘못 인코딩 된 데이터를 얻었습니다. situtaion을 처리하는 올바른 방법은 무엇입니까? 감사.