1
Java에서 파일이 ANSI 또는 UTF-8인지 여부를 감지하는 방법이 있습니까? 내가 가진 문제는 누군가 Excel에서 CSV 파일을 만들면 UTF-8이라는 것입니다. 메모장을 사용하여 작성하는 경우 ANSI입니다.Java가 파일이 UTF-8인지 또는 Ansi인지 감지합니다.
내가 파일 유형을 감지하여 적절하게 처리 할 수 있는지 궁금합니다.
감사합니다.
Java에서 파일이 ANSI 또는 UTF-8인지 여부를 감지하는 방법이 있습니까? 내가 가진 문제는 누군가 Excel에서 CSV 파일을 만들면 UTF-8이라는 것입니다. 메모장을 사용하여 작성하는 경우 ANSI입니다.Java가 파일이 UTF-8인지 또는 Ansi인지 감지합니다.
내가 파일 유형을 감지하여 적절하게 처리 할 수 있는지 궁금합니다.
감사합니다.
다음과 같이 시도해 볼 수 있습니다. 그것은 BOM (Byte Order Mark)을 포함하여 Excel에 의존합니다. BOM (빠른 검색은 그것을 검증 할 수는 없지만 자바는 BOM을 특정 "문자"로 취급합니다. \uFEFF
).
FileInputStream fis = new FileInputStream(file);
BufferedReader br = new BufferedReader(new InputStreamReader(fis, "UTF-8"));
String line = br.readLine();
if (line.startsWith("\uFEFF")) {
// it's UTF-8, throw away the BOM character and continue
line = line.substring(1);
} else {
// it's not UTF-8, reopen
br.close(); // also closes fis
fis = new FileInputStream(file); // reopen from the start
br = new BufferedReader(new InputStreamReader(fis, "Cp1252"));
line = br.readLine();
}
// now line contains the first line, and br.readLine() will get the next
에서 UTF-8 바이트 순서 표시 및 인코딩 검출에 대한 일부 자세한 내용은이 도움말을합니까? https://code.google.com/p/juniversalchardet/ –
확인 : http://stackoverflow.com/questions/3759356/what-is-the-most-accurate-encoding-detector –
일부 코드를 제공 할 수 있습니까? 그냥 링크? – user1158745