Bash는 ASCII 아트를 감지합니다.

Bash는 ASCII 아트를 감지합니다.

bash 스크립트의 경우 텍스트에 ASCII 아트가 포함되어 있는지 쉽게 감지할 수 있는 방법이 있습니까?

ASCII 아트의 예: 여기에 이미지 설명을 입력하세요.

답변1

첫째, 문제: 질문에 인코딩을 언급하지 않았기 때문에 인코딩이 이에 어떤 영향을 미치는지 모른다고 믿게 되었습니다. 문자 인코딩 결정중요성개별 바이트. 이는 우리가 작은 역사 수업부터 시작해야 함을 의미하며 이것이 쉬울 것인지에 대한 대답은 이미 "아니요"입니다.

기술적으로 귀하의 예는 ASCII가 아닙니다. 논의한 확장 문자는 IBM에 처음 나타납니다.코드페이지 437(CP437, OEM 437, IBM437과 같은 다양한 이름) 그러나 더 일반적으로 사용되는 인터넷 문자 집합(예:ISO 8859-1일명 라틴어-1)까지UTF-8사실상의 표준이 됩니다. UTF-8은 이러한 문자를 다음 형식으로 다시 가져옵니다.블록 요소그리고페인팅 박스 피규어기다리다. 제가 언급한 유니코드 블록에는 원래 CP437에 없는 문자가 포함되어 있어 글꼴 지원이 불안정하다는 점에 유의해야 합니다.

많은 이해를 바탕으로 이를 두 단계로 나눌 수 있습니다.

  1. 바이트 스트림을 해석하는 데 어떤 인코딩을 사용해야 하는지 결정합니다.
  2. "관심"이 있는 바이트 조합을 결정하십시오.

다른 사람들이 이미 지적했듯이 일반적으로 사용되는 텍스트 문자(즉, 기본적으로 7비트 ASCII 세트를 포함하여 Latin-1 코드 페이지의 모든 항목)가 아트 문자로 해석되어야 하는지 여부를 감지하는 것은 불가능합니다. 거기예술 작품에 활용될 확률이 훨씬 높아 평소보다 더 흥미를 느낄 수 있는 일련의 캐릭터들입니다.

제정신을 위해 여기서는 UTF-8에 대해 이야기하고 있다고 가정하겠습니다. 제공한 예제를 분석하면 다음 유니코드 블록의 문자가 표시됩니다.

이제부터는 모든 것이 구현에 따라 다릅니다. 각 문자를 검사하고 해당 문자가 관심 있는 유니코드 블록에 속하는지 확인해야 합니다. UTF-8은 멀티바이트 인코딩이기 때문에 경험 없이 수동으로 이 작업을 수행하는 것은 까다로울 수 있습니다. 즉, 기본 7비트 ASCII 세트 외부의 단일 문자가 여러 바이트로 표현된다는 의미입니다. UTF-8을 지원하는 소프트웨어를 사용하면 이 프로세스가 크게 단순화됩니다. bash질문 제목에서 알 수 있듯이 이 방법만 단독으로 시도하는 것은 권장하지 않습니다 .

관련 정보