Encoding — 문자 인코딩 지원
Encoding — 문자 인코딩 지원
텍스트를 바이트로, 바이트를 텍스트로 바꾸려면 각 문자를 어떻게 표현할지 정해둔 규칙이 필요해요. 그 규칙(인코딩)을 표현하는 롤이 Encoding이에요. ASCII나 UTF-8 같은 기본 인코딩뿐 아니라, 사용자가 직접 새 인코딩을 만들어 이 롤을 구현할 수도 있어요.
본문
role Encoding { ... }
Encoding 롤은 ASCII나 UTF-8 같은 문자 인코딩을 제공하는 클래스들이 구현해요. 내장 문자 인코딩이 쓰는 것 외에도, 사용자가 새 인코딩을 제공하려고 구현할 수 있어요. 이 롤을 수행하는 객체 인스턴스는 보통 Encoding::Registry로 얻어요. 지원되는 인코딩 목록은 IO::Handle을 참고하세요.
이 롤이 제공하는 모든 메서드는 스텁(stub)이라서, 롤을 수행하는 쪽이 직접 구현해야 해요.
method name
method name(--> Str)
추상 메서드로, 인코딩의 기본 이름을 반환하는 것을 목적으로 해요.
method alternative-names
method alternative-names()
추상 메서드로, 인코딩의 대체 이름 목록을 가져와야 해요.
method decoder
method decoder(*%options --> Encoding::Decoder)
제공된 옵션으로 설정된 이 인코딩의 문자 디코더(decoder) 인스턴스를 가져와야 해요. 옵션은 인코딩마다 달라요. 내장 인코딩은 모두 translate-nl을 지원하는데, True면 디코딩할 때 \r\n을 \n으로 바꿔줘요.
method encoder
method encoder(*%options --> Encoding::Encoder)
제공된 옵션으로 설정된 이 인코딩의 문자 인코더(encoder) 인스턴스를 가져와요. 옵션은 인코딩마다 달라요. 내장 인코딩은 모두 replacement(인코딩할 수 없는 문자를 위한 Str 대체 시퀀스, 또는 True로 기본 대체 시퀀스 사용)과 translate-nl(True면 현재 플랫폼이 Windows일 때 \n을 \r\n으로 바꿈)을 지원해요.