I 해요 같이, 메일, 그리고 이름과 때로는 q는 인코딩 올 주제로 작업 :Ruby에서 q 인코딩 된 문자열을 디코딩 할 수있는 방법이 있습니까?
=?UTF-8?Q?J=2E_Pablo_Fern=C3=A1ndez?=
루비를 디코딩 할 수있는 방법이 있나요? 그것은 TMail 그것이 돌봐 줘야 할 것,하지만 그것을하고 있지 않아.
I 해요 같이, 메일, 그리고 이름과 때로는 q는 인코딩 올 주제로 작업 :Ruby에서 q 인코딩 된 문자열을 디코딩 할 수있는 방법이 있습니까?
=?UTF-8?Q?J=2E_Pablo_Fern=C3=A1ndez?=
루비를 디코딩 할 수있는 방법이 있나요? 그것은 TMail 그것이 돌봐 줘야 할 것,하지만 그것을하고 있지 않아.
나는 이메일 과목을 구문 분석이 사용
str = "=?UTF-8?Q?J=2E_Pablo_Fern=C3=A1ndez?="
if m = /=\?([A-Za-z0-9\-]+)\?(B|Q)\?([!->@-~]+)\?=/i.match(str)
case m[2]
when "B" # Base64 encoded
decoded = Base64.decode64(m[3])
when "Q" # Q encoded
decoded = m[3].unpack("M").first.gsub('_',' ')
else
p "Could not find keyword!!!"
end
Iconv.conv('utf-8',m[1],decoded) # to convert to utf-8
end
:
는
다음을 시도해 볼 수도 있습니다
+1 니스, 고마워! –
루비 디코딩 인용 - 인쇄 가능한 문자열의 방법은,
puts "Pablo_Fern=C3=A1ndez".unpack "M"
# => Pablo_Fernández
을하지만 이것은 시작에 =?UTF-8?Q?
부분을 포함하여 전체 문자열 (작동하지 않는 것 어쩌면 당신은에서를 작업 할 수 있습니다. .이,하지만
이걸 가지고 '< br>'과 '< div>'같은 것을 얻었습니다. – Dorian
이것은 꽤 오래된 질문이지만 TMail :: Unquoter (또는 새로운 화신 인 Mail :: Encodings)도 작업을 수행합니다.
TMail::Unquoter.unquote_and_convert_to(str, 'utf-8')
또는
선 라인 당 기초Mail::Encodings.unquote_and_convert_to(str, 'utf-8')
이걸로'<= br>'과'<= div>'같은 것을 얻었습니다. – Dorian
디코딩 :
if ARGV[0]
lines = File.read(ARGV[0]).lines
else
lines = STDIN.each_line.to_a
end
puts lines.map { |c| c.unpack("M") }.join
:
line.unpack("M")
는 복호화 출력으로 STDIN 또는 인코딩 된 문자열 파일 제공된 입력 변환
http://ruby-doc.org/stdlib-1.9.3/libdoc/uri/rdoc/URI. html # method-c-decode_www_form – equivalent8