>Java >java지도 시간 >UTF-8로 인코딩된 파일을 읽을 때 BOM 표식 출력을 방지하는 방법은 무엇입니까?

UTF-8로 인코딩된 파일을 읽을 때 BOM 표식 출력을 방지하는 방법은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-16 22:43:03329검색

How to Avoid Outputting the BOM Marker When Reading a UTF-8 Encoded File?

유니코드 BOM 및 FileReader

BOM(바이트 순서 표시)이 있는 UTF-8 인코딩 파일을 읽을 때 문제가 발생할 수 있습니다. 파일 내용과 함께 출력되는 BOM 마커의 모습입니다. 이는 유니코드가 인코딩된 텍스트의 엔디안을 지정하기 위해 BOM을 정의하기 때문에 발생합니다. 엔디안은 제대로 처리되지 않으면 문자 시퀀스로 해석될 수 있습니다.

코드 조각에서:

  • fr 및 br은 파일을 바이트로 읽고 이를 문자로 변환하는 데 사용됩니다.
  • tmp는 파일의 각 줄을 바이트로 읽습니다. array.
  • text는 바이트 배열을 UTF-8로 인코딩된 문자열로 변환합니다.
  • content는 파일 내용의 일부인 BOM 표시를 포함하여 파일의 줄을 연결합니다.

BOM 마커가 포함되지 않도록 하려면 출력:

  1. 파일을 바이트 배열이 아닌 문자열로 읽습니다. 이렇게 하면 바이트를 문자로 변환할 필요가 없어 BOM 문제가 발생하지 않습니다.
String content = new String(Files.readAllBytes(Paths.get(file)), "UTF-8"));
  1. 파일을 바이트 배열로 읽어야 하는 경우 변환하기 전에 BOM 마커를 수동으로 제거할 수 있습니다. 그것을 문자열로. BOM 마커는 3바이트 시퀀스입니다.
if (tmp.length >= 3 &&
    tmp[0] == (byte) 0xEF &&
    tmp[1] == (byte) 0xBB &&
    tmp[2] == (byte) 0xBF) {

    // Remove the BOM marker
    tmp = Arrays.copyOfRange(tmp, 3, tmp.length);
}

위 내용은 UTF-8로 인코딩된 파일을 읽을 때 BOM 표식 출력을 방지하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.