2008-09-27 5 views
1

사용자 입력을 받아 화면에 렌더링하는 게임을 작성 중입니다. 내가 이것을 사용하고있는 엔진은 전적으로 유니 코드 친화적 인 것이므로 가능하다면 그것을 지키고 싶습니다. 문제는 렌더링 루프는 다음과 같습니다이다 :Ruby : 잠재적 인 유니 코드 문자열을 바이트로 나누는 방법

"string".each_byte do |c| 
    render_this_letter(c) 
end 

내가 국제화에 대한 훨씬 모르지만, 나는 오직 나를 위해 작동 할 것입니다 위의 코드를 알고 충분히 알고있는 사람들은 누구 말 내 언어. 나는 다음과 같은 것을 좋아할 것입니다.

코어 배포판에 존재합니까? 설치에 추가 요구 사항을 추가하는 것에 다소 반대합니다. 그러나이를 수행하는 유일한 방법 일 경우 살 것입니다.

재미있는 점은 문자열이 실제로 유니 코드 문자열인지 알 길이 없기 때문입니다.

EDIT : 내가 사용하고있는 라이브러리는 실제로 전체 문자열을 렌더링 할 수 있지만 사용자가 편집 할 수있게 해줍니다. 'backspace'를 누르면 본질적으로 얼마나 많은 바이트가 있는지 알아야합니다. 끝에서 잘라 버려.

답변

2

불행히도 루비 1.8.x는 유니 코드 지원이 좋지 않습니다. 그것은 1.9에서 다루어지고 있습니다. 그러나 그와 같은 도서관 (http://snippets.dzone.com/posts/show/4527)은 좋은 해결책입니다. 링크 된 라이브러리를 사용하여, 코드를 다음과 같이 보일 것입니다 : 당신은 레일의 코드베이스에서 ActiveSupport::CoreExtensions::String::Unicode 모듈을 포함 시도 할 수

"unicode_string".each_utf8_char do |u| 
    render_unicode_letter(u) 
end 
2

합니다.

관련 문제