2010-03-08 5 views
0

저는 루비에서 '£'기호와 약간 혼동합니다. 내가 얻을£ 기호가 무엇입니까

puts '£40' 

을 나는이 운영하는 .rb 파일에, 나는 JRuby를 IRB에서

£40 

를 얻을 : JRuby에서에서

나는 경우

>> pung = 'h40' 
=> "h40" 
>> pung.gsub!('h', '£') 
pung.gsub!('h', '£') 
=> "\24340" 

파운드 symbol은 \ 243으로 출력됩니다.

순수 루비 IRB에서는 £ 기호를 입력 할 필요가 없습니다. £ 키를 누르면 커서가 왼쪽으로 3 칸 이동합니다!

.toutf8 또는 toutf16을 시도하면 더 이상한 문자가 표시됩니다!

무슨 일이야! ??!? 내가 왜 간단한 £을 출력하지 못하는 이유는 무엇입니까?

+4

유니 코드는 변덕스러운 여주인입니다. –

답변

1

때로는 콘솔이 캐릭터를 붙여 넣는 방식에 문제가 있습니다. 예를 들어, 유니 코드 문자 시퀀스에는 콘솔이 백 스페이스 또는 왼쪽 화살표를 사용하는 문자가 포함될 수 있습니다. 이것은 아마도 당신의 캐릭터를받지 못하는 IRB 콘솔에서의 문제 일 것입니다.

스크립트의 경우 JRuby가 예상 한대로 작동합니다. 그러나 IRB가 유니 코드 문자 입력을 지원하기를 원하기 때문에 콘솔의 문제는 버그로보고되어야합니다. JRuby의 버그 추적기에 http://bugs.jruby.org으로 넘겨주고 간단한 세션을 보여 주거나 재현 할 단계를 제공하십시오 (쉬운 일입니다).

+0

콘솔 문제는 JRuby가 아니라 일반적인 Ruby에서 발생합니다. JRuby는 훨씬 더 잘 협력합니다! JRuby로 해결할 수없는 문제는이 여분의 ¬ 문자가 무엇인가하는 것입니다. 이 doesnt는 JRuby IRB와 함께 나타납니다. 그러나 Netbeans에서 JRuby를 통해 .rb 파일을 실행하고 있다면 않습니다. 그 수수께끼 ... –

0

대부분의 경우 기호는 유니 코드 기호이며 사용자가 실수로 변환하고 있습니다. 파운드 기호를 입력 할 수 없으면 콘솔이 유니 코드를 지원하는지 확인하십시오.

£.class을 수행 할 때 어떤 결과가 발생합니까? String? Unicode::String? 아마도 문자를 Unicode::String 또는 Unicode::Character으로 명시 적으로 선언하면 결과가 달라집니다.

+0

만약 내가 £ .class를하면, '\ 243 유효하지 않은 문자'\ 243'('¬ £')의 식 (SyntaxError) '..' ''. 어쩌면 어리석은 질문입니다. 어떻게 유니 코드로 선언할까요? String? –

+0

먼저 '유니 코드'가 필요한지 확인한 다음' "£".to_u'을하십시오. 자세한 내용은 http://ruby-unicode.rubyforge.org/doc/를 참조하십시오. 터미널에서 유니 코드 문자를 직접 입력 할 수 없으면' "\ 243".to_u'을 시도하십시오. – bta

0

'\ 243'은 '£'의 8 진수 이스케이프 시퀀스입니다.

관련 문제