'엔터키'에 해당되는 글 1건
2008.12.03 15:14
TextInput 으로 사용자에게 어떤 입력을 받게 되는 경우가 있습니다. 이때에 보다 많은 내용(예를 들어 사용자의 자기소개 같은 값)을 입력 받아야 하는 경우가 생기는데, 이때 사용하면 좋은 컴포넌트가 TextArea 입니다. TextArea 컴포넌트로 여러줄로 입력을 받게되면 사용자는 필연적으로 엔터키를 눌러 개행(줄바꿈)을 하게 되는데 오늘 이야기해보고자 하는 것은 이 개행에 대한 처리입니다.

문자열에 엔터를 처리하기 위해서 이스케이프 문자인 백슬래시(\)를 사용하여 처리를 하게 되는데, 보통 흔히 알고 있기로는 엔터를 처리하기 위해 \r\n 을 문자열에 포함시키면 된다고 아실 겁니다. 저도 학교에서 C수업을 들을때 그렇게 배웠습니다.

\r   : 캐리지리턴(carriage return) -  커서를 해당 줄의 처음으로 옮김
\n   : 라인피드(linefeed) - 커서를 해당 줄의 다음줄로 옮김

커서를 해당줄의 왼쪽으로 옮겨 다음줄로 내리면 엔터키를 친 것과 동일한 효과가 나오게 됩니다.
하지만 TextArea 에서는 \r 만으로 엔터키 처리를 하고 있습니다.




위와 같이 엔터키를 넣게 되면 실제로 TextArea의 text 속성에서 받는 문자열에는 "텍스트\r입력" 이라고 들어있게 되는 것이죠.

사용자에게 입력받은 해당 데이터를 서버에 저장하고 불러와 다시 TextArea 에 넣어줄때에 아무런 처리를 하지 않아도 상관없습니다. 어짜피 넣어진대로 다시 넣는 것이니까요. 하지만 서로 다른 언어에서 같은 데이터를 사용시에는 문제가 됩니다. 언어들마다 엔터의 처리가 다르기 때문이죠.

위에서 처럼 \r\n 으로 엔터키를 처리하는 경우도 있고, \r 만으로도, \n 만으로도 처리하는 경우가 있습니다. 만약 \r\n으로 엔터를 처리하는 시스템에서 만들어 놓은 문자열을 TextArea 에 대입하면 어떻게 될까요? "텍스트\r\n입력" 이라고 TextArea의 text 속성에 넣으면 아래와 같은 현상이 발생합니다.


위에서 보시는 것 처럼 \r\n 둘다 엔터키로 인식되네요.

참고로 말씀드리자면 MXML 상에서 위의 이스케이스 문자를 인식시키실때는 아래와 같이 하시면 됩니다.


아무튼, 저는 이와 같은 문제를 자바로 구성된 서버를 이용하면서 겪게 되었습니다. 해당 서버를 이용하는 또다른 쪽이 델파이로 구성되어 있는데, 델파이에서는 \r\n 으로 엔터키를 표현하는데, 플렉스에서 받아오니 엔터가 2번 입력되는 것 처럼 보이는 것은 물론 Flex 쪽에서 생성한 문자열은 델파이에서 엔터키가 없는 상태로 출력되는 것이었습니다.
물론 더 좋은 방법들이 있을꺼라 생각되지만, 저는 플렉스쪽에서 변환해서 쓰고 저장시에도 변환해서 보내기로 결정을 했습니다.
그래서 아래와 같은 코드를 구현하였습니다.



네이밍이 좀 별로네요.. ;;
엔터키의 처리가 다르다는 것을 알아두시면 좋겠네요. ;)


ps. Flash Player 10 이 공개된 이후 FP10 이 설치된 브라우저에서 이전 포스트의 swf 파일을 로드하지 못하는 경우가 생기네요.
정확하게 이유는 모르겠습니다. 티스토리 포럼에 같은 내용의 버그신고가 이어지고 있는데, 자세히 알아봐야겠습니다.

신고
Creative Commons License
Creative Commons License
Favicon of http://minsangk.com BlogIcon 민상k | 2008.12.08 02:11 신고 | PERMALINK | EDIT/DEL | REPLY
예전에 asp.net 과 연동하면서 저거 때문에 골치가 좀 아팠는데, \r 을 그냥 리턴으로 인식하는 것이었군요. 당시의 저도 안 되는 정규식 실력으로 힘겹게 깨작이던 기억이 나네요. 저런 함수 하나 만들어 놓으면 편하게 쓸 걸 그랬군요; 연동하는 언어가 동일하다면 change 이벤트 핸들러에 같이 물려 놔도 좋을 것 같습니다.

좋은 정보 감사합니다.

ps: 이제 RSS 로 들어와도 바로 글이 걸리네요? 예전엔 올블 배너 같은 것이 떴었거든요 -.-.-
ps 하나더: 코드 컬러 마스킹 해주는 녀석은 플러그인인가요?;
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2008.12.08 11:37 신고 | PERMALINK | EDIT/DEL
올블 배너가 떴던가요? ^^;; 왜 떴지. .ㅎㅎ
코드 출력해주는 것은 구글에 있는 syntaxhightlighter 를 사용했습니다.
열이아빠님의 http://koko8829.tistory.com/305 글 참고하시면 좋겠네요 ^^
Favicon of http://adnaru.tistory.com BlogIcon 희희덕 | 2008.12.11 01:49 신고 | PERMALINK | EDIT/DEL | REPLY
이야.. ㅎㅎ 멋진 정보 감사합니다.
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2008.12.14 18:00 신고 | PERMALINK | EDIT/DEL
방문 감사합니다 ;)
Favicon of http://cafe.naver.com/codestudy BlogIcon 이정칠 | 2008.12.11 08:26 신고 | PERMALINK | EDIT/DEL | REPLY
좋은 정보 감사합니다. ^^
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2008.12.14 18:00 신고 | PERMALINK | EDIT/DEL
오우~ 형님 여기까지 방문해주시고 감사합니다.;)
서비짱 | 2008.12.12 13:10 신고 | PERMALINK | EDIT/DEL | REPLY
검쉰님 블로그에 첨온건가....^^
몰랐네요.. 좋은정보들이 많네요...
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2008.12.14 18:00 신고 | PERMALINK | EDIT/DEL
^^ 자주 방문해주세요 ㅎ
Favicon of http://egg.pe.kr BlogIcon egg | 2008.12.14 20:00 신고 | PERMALINK | EDIT/DEL | REPLY
아이팟 터치 2세대...
그것도 여친님이...
ㅡㅠ 부럽습니다.
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2008.12.15 10:34 신고 | PERMALINK | EDIT/DEL
저는 카메라를 사줬... ㅋ
Favicon of http://orochi77.egloos.com BlogIcon 꼬출든남자 | 2008.12.25 02:19 신고 | PERMALINK | EDIT/DEL | REPLY
첨부파일로 첨부한 플래시 파일을 FP10에서 로드를 못하게 되는 경우가 있죠..
네이버의 게시판들도 유사한 문제가 있는데 그게 HTTPHeader에서 attach 머시기 하는 값과 관련이 있다고 합니다.
헤더 정보에 그 값이 있으면 FP10에서는 SWF를 다운로드 할 파일로 인식을 하여 플레이어에서 반사시킨다는..
어도비 테크노트에 있는것 같던데요.. (자세한건 저도 회사 가서 찾아봐야 할 듯 합니다)

ps. 게릴라군이랑 지금 같이 근무하시나요?? ㅎㅎ
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2008.12.25 15:21 신고 | PERMALINK | EDIT/DEL
아하 그렇군요 ;) 찾아보겠습니다. ;)
티스토리 사용중이라 원인을 안다해도 제가 할 수 있는 건 없겠군요 ^^;;;

게릴라님이랑 같이 근무는 아니고요.
온라인에서 쭉 알다가 얼마전에 오프라인에서 실제로 만나뵈었어요 ㅎㅎ
담에 꼬출든남자님도 함께 뵈었으면 좋겠네요~ ^^;
Favicon of http://orochi77.egloos.com BlogIcon 꼬출든남자 | 2009.01.16 00:33 신고 | PERMALINK | EDIT/DEL
http://www.adobeflex.co.kr/iwt/board/board.php?tn=pds_tech&id=213&mode=view
여기에서

어떤 HTTP 서버들은 다음과 같은 응답 헤더를 보내기도 한다:



Content-Disposition: attachment


이 내용이 관련있을것 같아요
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2009.01.16 10:16 신고 | PERMALINK | EDIT/DEL
저도 살펴봤는데 이거 뭐 제가 어떻게 할 수 있는 문제가 아니더군요..;;
티스토리 언제 고쳐줄래나.;;
미유 | 2009.01.07 15:50 신고 | PERMALINK | EDIT/DEL | REPLY
리눅스에 쓰는과정에서 한참 고생했는데 정말 감사합니다~
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2009.01.08 23:41 신고 | PERMALINK | EDIT/DEL
도움이 되셨다니 정말 다행입니다. ;)
좋은 하루되세요~
Favicon of http://blog.naver.com/gohappy81 BlogIcon Douglas9 | 2009.01.16 11:39 신고 | PERMALINK | EDIT/DEL | REPLY
오 좋은 정보 감사드려요^^
그리고 꼬출든남자 형님 회사에서 조용하시더니 여기 계셨군요 -0-
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2009.01.16 11:51 신고 | PERMALINK | EDIT/DEL
방문 감사드립니다. ;)
트랙백은 더더욱 감사드립니다. ;)
장문영 | 2009.01.20 11:21 신고 | PERMALINK | EDIT/DEL | REPLY
Air에서는 파일을 읽어서 "\r\n"으로 열심히 파싱하는데도 불구하고 안되었는데 "\n"으로 해결함 -_-; Air에서는 enter값이 \n인가요?
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2009.01.20 17:04 신고 | PERMALINK | EDIT/DEL
FlashPlayer이건 AIR 위에서 이건 간에 TextArea에서 사용자가 입력한 문자열의 개행은 \r로 처리합니다.
본문에서 있다싶이 \n도 개행으로 처리하기도 합니다.

질문으로 유추해보건데 파일을 읽으셨다니 파일에 있는 문자열에 \r\n이 동시에 사용되었을 경우에는 \r 하나만 사용하도록 변경해서 TextArea에 올려주는 것이 필요합니다.
아마도 거꾸로 작업하신듯 싶네요. ^^
퍼플린 | 2009.06.15 17:09 신고 | PERMALINK | EDIT/DEL | REPLY
움.. 나도 똑같은 내용을 블로그에 썼었는데 여기도 있넹 ㅎㅎ

플레시쪽 작업하면서 똑같은 문제가 나와서 고민했던적이 -ㅅ-;;;
Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 | 2009.06.15 18:31 신고 | PERMALINK | EDIT/DEL
다들 비슷한 문제를 겪는데 공유가 안되니 계속 삽질만... ㅋ
- 덧글 좀..(굽신굽신) : 장문의 덧글은 트랙백을 이용해주세요 ;^)
Name
Password
Homepage
Secret
prev"" #1 next