저는 데이터베이스에 \ 303 \ 255와 같은 문자열을 가지고 있습니다.루비 문자열 표현
어떻게 그 8 문자 표현을 변환 할 수 있습니까?
나는 그들을 모두 바꿀 수는 있지만 다른 방법은 없습니까?
저는 데이터베이스에 \ 303 \ 255와 같은 문자열을 가지고 있습니다.루비 문자열 표현
어떻게 그 8 문자 표현을 변환 할 수 있습니까?
나는 그들을 모두 바꿀 수는 있지만 다른 방법은 없습니까?
config (설정)하기 위해 다음 두 줄을 추가하려고하고, 다만 오해 할 수 있습니다.
나는 이걸로 싸웠다. 꽤 아니야. 이 문자열을 구문 분석하고 pack
을 사용하여 관련 바이트를 압축합니다.
"foo \\303\\255 bar".gsub(/(\\\d{3})+/) do |match|
match[1..-1].split("\\").map{ |octet| octet.to_i(8) }.pack("c*")
end.force_encoding("UTF-8")
는 훨씬 짧은 버전 eval
를 사용하지만 잘못 사용하면 그것은 거대한 보안 위험이 있기 때문에 그것은 항상 eval
당신이 할 수있는 경우를 피하기 위해 노력하고 가치가있다.
"foo \\303\\255 bar".gsub(/(\\\d{3})+/) { |m| eval('"' + m + '"') }
문자열에 실제로 8 문자가 아니라 2 바이트입니다. 난 당신이 í으로 표시하는 255 \ 303 \ 원하는 위치 모르겠지만 당신이 당신의 .rb 파일의 상단에
# encoding: utf-8
를 넣으면 루비는 UTF-8을 사용합니다. 당신은 루비 온 레일즈를 사용하는 경우
당신은 당신이 설명으로 문제가 정말 가정/environment.rb에
Encoding.default_external = Encoding::UTF_8
Encoding.default_internal = Encoding::UTF_8
상단의 인코딩이 작동하지 않았습니다. 평가에 성공했습니다. Jonas – kaydara
인코딩 기능 : 우리는 우리가
eval
는 '내가 가서이이 일을 아마 안전 말할 것이다 여기에서 보내고있는 무슨의 형식을 검증하고 있음을 감안할 때? UTF-8? –예, 인코딩은 UTF-8입니다. – kaydara
문자열이'str = "\"\\ 303 \\ 255 \ ""'(즉, 슬래시는 실제로 문자열에 있습니까?)라는 의미입니까? 그렇다면 그것들을 추출하고'Array # pack'해야합니다. – d11wtq