Java 문자 스트림은 바이트 스트림을 랩핑하여 기본 바이트 스트림이 시스템 기본값 또는 달리 특별히 정의 된 문자 세트로 해석된다는 것을 알고 있습니다.왜 문자 스트림입니까?
내 시스템의 기본 문자 집합은 UTF-8입니다.
FileReader
을 사용하여 텍스트 파일을 읽는 경우 기본 문자 집합이 기본 InputStreamReader
의 바이트를 해석하는 데 사용되므로 모든 것이 정상적으로 보입니다. UTF-8로 인코딩 된 텍스트 파일을 UTF-16으로 읽도록 명시 적으로 InputStreamReader
을 정의하면 모든 것이 이상하게 보입니다. FileInputStream
과 같은 바이트 스트림을 사용하고 출력을 System.out으로 리디렉션하면 모든 것이 잘 보입니다.
제 질문은;
문자 스트림을 사용하는 것이 유용한 이유는 무엇입니까?
바이트 스트림을 직접 사용하는 대신 문자 스트림을 사용하는 이유는 무엇입니까?
특정 문자 집합을 정의하는 것이 유용한 경우는 언제입니까?
일을'FileReader' 그렇게 빌어 먹을 쓸모가 있음을 언급합니다. :) – Bombe
왜'FileInputStream'은'InputStreamReader'와 같은 간단한 UTF-8 인코딩 된 텍스트를 해석합니까? Peter Lawrey가 말한대로입니까? 텍스트에 모호한 문자를 추가하는 경우에만 차이점을 알 수 있습니까? – wulfgarpro
@ WulfgarPro : 그렇지 않습니다. 원시 바이트를 읽습니다. 이러한 raw 바이트를 System.out에 보내면 System.out (PrintStream)은 기본 플랫폼 인코딩을 사용하여 콘솔에 출력합니다. –