Encoding 클래스
Encoding 클래스
Encoding 인스턴스는 Ruby에서 사용할 수 있는 문자 인코딩을 나타내요. Encoding 네임스페이스 아래의 상수로 정의돼요. 이름과, 선택적으로 별칭(alias)을 가져요:
Encoding::US_ASCII.name # => "US-ASCII"
Encoding::US_ASCII.names # => ["US-ASCII", "ASCII", "ANSI_X3.4-1968", "646"]
인코딩을 인자로 받는 Ruby 메서드는 다음을 모두 받아들여요.
Encoding객체.- 인코딩의 이름.
- 인코딩 이름의 별칭.
이 세 가지는 동등해요:
'foo'.encode(Encoding::US_ASCII) # Encoding object.
'foo'.encode('US-ASCII') # Encoding name.
'foo'.encode('ASCII') # Encoding alias.
인코딩과 그 사용에 대한 전체 논의는 Encodings 문서를 참고하세요.
Encoding::ASCII_8BIT은 특수 목적 인코딩으로, 보통 문자 문자열이 아니라 바이트 문자열에 쓰여요. 이름이 가리키듯 ASCII 범위의 문자는 ASCII 문자로 취급돼요. 다른 ASCII 호환 인코딩을 쓸 때 유용해요.
출처: Ruby 3.3 API
본문
클래스 메서드
aliases → {"alias1" => "orig1", "alias2" → "orig2", ...}— 사용 가능한 인코딩 별칭과 원래 인코딩 이름의 해시를 돌려줘요.
Encoding.aliases
#=> {"BINARY"=>"ASCII-8BIT", "ASCII"=>"US-ASCII", "ANSI_X3.4-1968"=>"US-ASCII",
"SJIS"=>"Windows-31J", "eucJP"=>"EUC-JP", "CP932"=>"Windows-31J"}
compatible?(obj1, obj2) → enc or nil— 두 객체의 호환성을 검사해요. 둘 다 문자열이면 이어붙일(concatenatable) 수 있을 때 호환돼요. 호환되면 이어붙인 문자열의 인코딩을 돌려주고, 아니면 nil을 돌려줘요.
Encoding.compatible?("\xa1".force_encoding("iso-8859-1"), "b")
#=> #<Encoding:ISO-8859-1>
Encoding.compatible?(
"\xa1".force_encoding("iso-8859-1"),
"\xa1\xa1".force_encoding("euc-jp"))
#=> nil
default_external → enc— 기본 외부 인코딩을 돌려줘요.CSV, 디스크에서 읽은File데이터, SDBM,StringIO,Zlib::GzipReader/Writer,String#inspect,Regexp#inspect등에서 만든 문자열에 기본으로 사용돼요. -E 옵션으로 초기화돼요. -E가 설정되지 않으면 Windows에선 UTF-8, 다른 OS에선 로케일로 초기화돼요.default_external = enc— 기본 외부 인코딩을 설정해요. 값 변경 전에 만든 문자열과 이후에 만든 문자열의 인코딩이 달라질 수 있으니, ruby 코드에서 직접 설정하기보다ruby -E로 실행하는 편이 좋아요.default_internal → enc— 기본 내부 인코딩을 돌려줘요. 기본 내부 인코딩이 nil이 아니면 여러 곳에서 문자열이 이 인코딩으로 트랜스코딩돼요. 예를 들어CSV, 디스크에서 읽은File데이터,Dir의 파일 이름,Integer#chr, ENV의 값,$PROGRAM_NAME을 포함한 ARGV 값 등이에요. 추가로String#encode와String#encode!는 인코딩이 주어지지 않으면 기본 내부 인코딩을 사용해요. -E 옵션으로 초기화되고 그 외엔 nil이에요.default_internal = enc or nil— 기본 내부 인코딩을 설정하거나, nil을 주면 제거해요.find(string) → enc— 지정된 이름으로 인코딩을 검색해요. name은 문자열이어야 해요.Encoding.find("US-ASCII") #=> #<Encoding:US-ASCII>인코딩 이름과 별칭을 받아들이며, "external", "internal", "locale", "filesystem" 같은 특수 별칭도 받아요. 이름이 없으면ArgumentError가 발생해요. 다만Encoding.find("internal")만은 Ruby에 기본 내부 인코딩이 없을 때 nil을 돌려줘요.list → [enc1, enc2, ...]— 로드된 인코딩의 목록을 돌려줘요.locale_charmap → string— 로케일 charmap 이름을 돌려줘요. 적절한 정보가 없으면 nil을 돌려줘요. 결과는 플랫폼 의존적이라Encoding.find(Encoding.locale_charmap)이 오류를 낼 수도 있어요. 알 수 없는 로케일에서도 인코딩 객체가 필요하면Encoding.find("locale")을 쓸 수 있어요.name_list → ["enc1", "enc2", ...]— 사용 가능한 인코딩 이름의 목록을 돌려줘요.
인스턴스 메서드
ascii_compatible? → true or false— ASCII 호환 여부를 돌려줘요.Encoding::UTF_8.ascii_compatible? #=> true,Encoding::UTF_16BE.ascii_compatible? #=> falsedummy? → true or false— dummy 인코딩이면 true를 돌려줘요. dummy 인코딩은 문자 처리가 제대로 구현되지 않은 인코딩으로, 상태 기반(stateful) 인코딩에 쓰여요.Encoding::ISO_2022_JP.dummy? #=> true,Encoding::UTF_8.dummy? #=> falseinspect → string— 프로그래머를 위한 인코딩 표현 문자열을 돌려줘요.Encoding::UTF_8.inspect #=> "#<Encoding:UTF-8>"name → string(to_s의 별칭) — 인코딩의 이름을 돌려줘요.Encoding::UTF_8.name #=> "UTF-8"names → array— 인코딩의 이름과 별칭 목록을 돌려줘요.Encoding::WINDOWS_31J.names #=> ["Windows-31J", "CP932", "csWindows31J", "SJIS", "PCK"]to_s → string(name의 별칭) — 인코딩의 이름을 돌려줘요.
더 알아보기
- Encodings 문서 — 인코딩과 그 사용에 대한 전체 설명