UTF-8 파일 읽기에서 BOM 마커 처리
바이트 순서 표시( BOM), 예기치 않은 출력을 방지하려면 BOM을 올바르게 처리하는 것이 중요합니다. BOM은 파일의 바이트 순서를 나타내는 특수한 바이트 시퀀스입니다. UTF-8에서 BOM은 3바이트 시퀀스 EF BB BF입니다.
다음 코드를 고려하세요.
fr = new FileReader(file); br = new BufferedReader(fr); String tmp = null; while ((tmp = br.readLine()) != null) { String text; text = new String(tmp.getBytes(), "UTF-8"); content += text + System.getProperty("line.separator"); }
이 코드에서 BOM은 출력 문자열에 포함됩니다. getBytes() 메서드가 BOM을 포함하여 문자열의 원시 바이트를 검색하기 때문입니다. BOM을 올바르게 처리하려면 다음 기술을 사용할 수 있습니다.
방법 1: BOM 문자 집합 지정
문자 집합을 UTF-8로 지정할 수 있습니다. Charset 클래스를 사용하는 BOM:
Charset charset = Charset.forName("UTF-8"); String text = new String(tmp.getBytes(charset), charset);
방법 2: 읽기 및 삭제 BOM
BOM이 필요하지 않은 경우 파일의 나머지 부분을 처리하기 전에 BOM을 읽고 삭제할 수 있습니다.
char[] bom = new char[3]; int bytesRead = br.read(bom, 0, bom.length); if (bytesRead == bom.length && new String(bom).equals("\uFEFF")) { // BOM exists, drop it }
다음 기술 중 하나를 구현하면 다음을 보장할 수 있습니다. BOM이 올바르게 처리되고 출력 문자열에 BOM 마커가 포함되지 않았는지 확인하세요.
위 내용은 UTF-8 파일 읽기에서 BOM 마커를 처리하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!