표준 출력에 기록합니다.

표준 출력에 기록합니다.

궁금증은 여기에 있습니다. 나는 비트맵을 cat 편집하여 파일의 각 바이트에 대해 하나의 ASCII 문자를 표시하기를 원했습니다. 따라서 처음 몇 문자는 예상한 대로(BM6)이지만 터미널에 "strip", "Ѿ", "׷" 등과 같은 비ASCII 문자도 표시된다는 사실을 알아냈습니다.

왜 이런거야? 고양이는 여기서 뭘 하고 있는 걸까요?

(제가 사용하고 있는 비트맵은 bitPerPixel=8이므로 멀티바이트 픽셀을 표현할 수 없겠죠?)

답변1

표준 출력에 기록합니다.

다음에 일어날 일은 표준 출력에 따라 다릅니다. 단말 장치의 경우 동작은 단말에 의해 결정되며,다음과 관련이 없습니다cat.

터미널 동작과 관련하여 몇 가지 중요한 사항이 있습니다.

  • ASCII는 7비트 문자 인코딩입니다. 8비트 바이트는 ASCII 문자 집합의 두 배를 나타낼 수 있습니다. 그 외 128개 값의 의미는 주제가 되었습니다많은1970년대, 1980년대, 1990년대를 오가며. 단일 바이트 인코딩, 더블 바이트 인코딩, 코드 페이지, ISO 8859 및 ASCII 자체의 변형 부분이 있습니다(또는 표준의 후속 버전에서 변경되었습니다). 이는 ISO 2022/ECMA-35 및 전환 가능한 문자 집합의 복잡성을 다루지도 않습니다.

    "순수한 ASCII" 세계가 있다는 신화가 있습니다. 거의 반세기 동안 이것은 사실이 아니었습니다. 요즘에는 실제 ASCII만 보는 상황이 거의 발생하지 않습니다.

  • 요즘은 터미널에뮬레이터각 코드 포인트가 1바이트 이상인 유니코드의 가변 길이 인코딩인 UTF-8을 사용할 가능성이 높습니다. 15년 전부터 일반화되기 시작했습니다.
  • 심지어ASCII만 사용하고 있으며 일부 문자는 다음과 같습니다.인쇄문자가 있으면 터미널은 인쇄 가능한 그래픽을 렌더링하고 다른 문자는제어인쇄되지 않는 다양한 효과가 있는 문자( ␀ 의 경우 전혀 효과가 없는 경우 포함) 유니코드는 더 복잡하지만 특정 코드 포인트만 실제로 표시할 수 있다는 기본 아이디어는 여전히 대략적으로 정확합니다.
  • 터미널은 수신된 바이트 스트림을 문자 인코딩에 따라 문자로 디코딩합니다.현재 사용할 준비가 되었습니다.. 각 터미널의 상황은 매우 다양합니다. 단말기에뮬레이터일반적으로 사용자가 원하는 대로 디코딩을 변경할 수 있는 몇 가지 메뉴 옵션이 있습니다.

꽉 쥐고 터미널에 인쇄하여 비트맵을 보는 것은 cat미친 짓입니다. 배움의 즐거움 hexdump,또는od. 전혀 cat관여하면 안 된다.

관련 정보