Ruby CGI 라이브러리 한글 관련 버그 프로그래밍

s = CGI.new["word"]
print "#{s.class} #{s.length}<br/>\n";   ###  Step 1

s.each{|it| print "(#{it}) " }

s = s[0..3] if s !~ /^[a-zA-Z]/
print "#{s.class} #{s.length}<br/>\n";  #### Step 2

-----------------------------------------

GET이나 POST의 방법으로 넘어온 데이타를 처리하는 위와 같은 코드에서 넘어온 값이 로마자인 경우엔 Set 1이나 2에서 s 가 모두 String으로 처리되지만 한글인 경우에 Step의 단계에선 Array로 취급을 받아서 길이가 무조건 1로 나옵니다.

ex1) "hello" 가 post 된 경우

String 5
(hello) String 5

ex2) "한글은"이 post 된 경우

String 6
(한글은) Array 1

-_-;;

편법으로

s = CGI.new["word"][0] 과 같이 하면 한글도 계속 String으로 취급 받습니다.

좀 더 일반적인 처리 방법인

cgi = CGI.new

s = cgi.params["word"][0]

와 같은 경우엔 한글도 제대로 처리가 되네요. 정규식에서도 한글처리가 문제가 있고... 무슨 외부 라이브러리를 추가하면 된다는데 유니코드 제대로 지원한다는 JRuby를 시도해봐야겠네요.





덧글

댓글 입력 영역