본문 바로가기

쓰기

원인을 알아냈습니다. 하지만 이건.. 참 난감하군요.

이 문제는 RLCmd의 문제가 아닙니다.
이 문제는 SOW방식의 문제도 아닙니다.

이 문제는 한글 완성형 코드의 문제입니다... oTL

예전에 KoFilter 를 한참 만들고 있을 때... 이 이야기가 나온 적이 있었습니다.

preKoFilter 테스트 버전 20080712

이건 별거 아니고.. 입력이 KSC-5601 (한글) 인지를 체크해서 한글이면 번역을 거부해버립니다.

테크니컬하게 이야기해서.. 입력중 주요 쓰이는 한글 2350자가 있는지 검사해서 한글이 일어보다 많을 경우 Translate() 실패 (FALSE) 를 돌려줘 버립니다. 
 

여기서 말하는 KSC-5601 이라는 것은, 엄밀하게 말해 KSC-5601-1987 완성형 한글코드 라고 불립니다.
위에 적힌 것처럼 *주요 쓰이는 한글 2350자* 와 일용한자, 각종 특수문자로 구성되어 있지요.

왜 이 이야기가 나오냐면..

"퓩" 이 주요 쓰이는 한글 2350자.. 에 들어있지 않기 때문입니다.. oTL

우리가 보통 윈도우에서 쓰이는 한글은 저 KSC-5601 의 확장판으로, 마이크로소프트 확장 완성형 혹은 CP949라고 불리는 코드입니다.
현대 한글 조합 11172자중 저 2350자만으로는 부족한 8천 몇개의 한자를 다른 부분에 할당한 것이죠.

뭐.. 이에 대해서는 정말 한글 엄마가 보면 미치고 환장할 스토리가 있으니 궁금하시면 저 KSC-5601 이나 확장 완성형 등으로 인터넷을 찾아보시고요, 문제가 생기는 정확한 이유는 다음과 같습니다.

* 단어 설명
리드 바이트 (lead byte) : 어떤 멀티바이트 문자의 첫번째 시작 바이트
트레일 바이트 (trail byte) : 어떤 멀티바이트 문자의 두번째 이후 바이트

* 원인
1. "퓩" 의 코드는 0xBF91 입니다. 이것은 KSC-5601의 2바이트 한글 코드 범위 (리드 0xA1-0xFE, 트레일 0xA1-0xFE) 에 들지 않습니다.
2. 따라서 이 코드는 KSC-5601 을 기준으로 만들어진 ENCODEKOR 로 변환이 안 됩니다.. (문제 1)
3. 그래서 0xBF91 그대로 게임 내 일본어 표시기로 넘어갑니다.
4. 그런데 Shift-JIS 의 코드 범위는 2바이트 코드 (리드 0x81-0x9F, 0xE0-0xEF, 트레일 0x40-0xFC), 1바이트 코드(0xA0-0xDF)이다.
5. 0xBF91 의 리드바이트 0xBF 는 1바이트 코드 (반각 카타카나) 로 취급된다.. (문제 2)
6. 따라서 0xBF 의 한 글자와 0x91~(다음 리드바이트) 로 되어있는 두 개의 글자로 취급된다.
7. 0x91~(다음 리드바이트)에서 문자가 하나 깨지기 시작했으니 그 뒤로 줄줄이 줄줄이 깨진다.. OTL (문제 3)
8. 마지막 # 바로 전 바이트가 리드바이트 취급을 당해 (전 바이트)~# 으로 한 문자 취급 받아 문자열 끝 코드 # 이 깨진다.
9. 리얼라이브 게임 특성상 바로 게임이 멈춰버린다...

* 해결 방법...
가장 좋은 방법은 ENCODEKOR 의 코드를 주물럭대어서 어떻게든 확장완성형의 코드를 이해시키는 방법입니다.
문제는.. ENCODEKOR 의 범위가 KSC-5601의 한글코드 부분이 딱 들어가도록만큼만 되도록 디자인되었다는 것입니다;
계산해 본 결과.. 한글 코드보다 조금 더 들어가게 생기긴 했는데.. 그래도 확장완성형의 코드가 다 들어가기는 너무 좁습니다;

두번째 방법은.. 에찌게에서 많이 쓰이는 몇몇 문자 (퓩 이라거나 츗 이라거나... ㄷㄷㄷ)만을 ENCODEKOR 의 약간 남는 부분에 강제 맵핑하는 방법이 있는데.. 이건 1) 몇몇 문자 라는 게 실제로 어떤것이 있는지 확실하지가 않고 2) 코드 테이블을 따로 만들어야 한다는 단점이 있습니다; 노가다라고 할까요;

마지막으로.. RLCmd 의 빈칸 입력 부분을 고쳐서 2바이트 빈칸 말고 1바이트 빈칸으로 채우는 방법이 있는데.. 이건 실제 게임에서 위의 문제로 인해 글자가 깨지기는 하지만 뒷부분에 1바이트 빈칸이 들어감으로서 줄줄이 깨지는 악순환을 끝내고 # 이 제대로 인식되도록 하는 방법이 있습니다. 하지만, 1) 이 방법은 실제로 문제를 해결하는 것이 아니라 *일단 이 부분만 넘기고 보자!* 라는 근시안적인 방법이고 2) 원문과 번역문의 길이가 같거가 길 경우 1바이트 빈칸이 들어갈 곳이 없다면 역시 게임이 진행 안된다는 문제가 있습니다. 단, 물론 구현은 가장 쉽습니다 orz

어쨌든.. 이 문제는 정말 골치아프군요; 일단 마지막 방법으로 해당 부분만 넘기도록 RLCmd 를 고쳐보도록 하겠습니다.
분류 :
Talk
조회 수 :
7557
등록일 :
2008.08.02
12:21:48
엮인글 :
https://arallab.hided.net/3532/2ae/trackback
게시글 주소 :
https://arallab.hided.net/board_devtalk/3532
List of Articles
번호 제목 글쓴이 조회 수sort 추천 수 날짜 최근 수정일
공지 Talk [필독] 테스트필터 사용시 주의사항 라파에 155439   2008-08-03 2008-12-16 00:03
329 Archive FixLine v2 20090404 [....] [1] file Hide_D 14767   2009-04-04 2009-04-04 19:10
 
328 Talk AralTrans 필터 물갈이할 예정입니다.... [1] Hide_D 14725   2009-05-21 2009-05-22 01:55
일단 제가 방학을 시작하기도 했고 하니 아랄트랜스 내에서 제가 제작한 필터를 싹 물갈이해볼 생각입니다. 우선 물갈이 대상 CustomDic 0.4 KDC CustomScript v2 DumpText v2 FixLine v3 작업을 위해서 다음과 같은 라이브러리를 만들어서 걍 복붙 시전할 계...  
327 Talk 파일을 다운로드 받을때 한가지 잠재적인 문제점을 발견했습니다. [2] Hide_D 14677   2009-12-18 2009-12-18 18:17
지금 보니까 사이트에 파일을 올려두고 파일을 받아가는 구조로 되어 있는듯 한데, 이 다운로드 고유 주소가 바뀔 수 있다는게 문젭니다. [ex : 업로더가 DenyWord.ini를 수정하기 위해 기존에 올려진 DenyWord.ini를 지우고 새로 올린 경우] 이 때 1. 사용자...  
326 Talk 일단 기리기리 미 번역 파트(선택지) 보고? file Hide_D 14675   2008-07-10 2008-07-10 00:34
 
325 Talk Windows7에서 0.3 현재시점으로 안돌아갑니다.ㅜ [6] Hide_D 14656   2009-12-04 2009-12-09 23:27
이유가 뭘까요  
324 Talk [오류?] 아랄0.3 실행하여 autofinder 적용시 오류인지... [1] file 암흑마제 14512   2009-12-20 2009-12-20 13:54
 
323 Archive FixLine v2 20090331 테스트버전 [2] file Hide_D 14494   2009-03-31 2009-04-01 14:52
 
322 Talk DumpText2 계획안 [6] file Hide_D 14432   2008-10-02 2009-01-06 01:24
 
321 Archive FixLine v2 20090402 테스트버전 [1] file Hide_D 14431   2009-04-02 2009-04-02 09:03
 
320 Talk 0.3의 설계가 안되네요;; [6] 아랄 14431   2008-11-19 2009-01-06 01:22
미연시에 국한된 유틸이 아닌 이제 떳떳한(?) 범용 유틸로 거듭나려하니 욕심만 많아지고,, 리소스 편집기능, 후킹체인 다이어그램 표시 등... 모든 컨셉을 적용하자니 서드파티 플러그인 규격이 복잡해지고 으으.. 아무래도 0.2 레이아웃을 그대로 가져가야 ...  
319 Talk 음 제가 컴퓨터를 못하는 사람이라 뻘글일 수도 있겠지만.. [2] 쥬빌 14389   2008-12-30 2008-12-30 12:14
아랄 트랜스의 장점이 게임상의 대사가 바로 한글로 변환 표기되는 것이라 보는데요. 번역률을 높이기 위해 번역본이 있는 게임들은 ez트랜스가 아닌, 미연시 번역본 text과 연동하여 쓸수는 없을까요? ez와의 연동 구조를 잘 모르겠으나..게임상의 일어를 ez...  
318 Archive [번역툴] QuickTrans 0.1.1 [4] HaruKaze 14339   2009-05-04 2009-05-05 22:28
몇가지 버그와 자동 저장기능을 추가한 0.1.1 버전입니다. 다운로드 -- Version History -- 0.1.1 Release 2009-05-04 18:00 - 명령어 예외 목록의 수정 기능이 정상적으로 작동되지 않는 버그 수정 - 프로그램이 비정상적으로 종료될 만한 옵션을 변경할 경우...  
317 Talk 어제 말씀드렸던것... 알아냈습니다. file 나는누구인감? 14332   2008-07-10 2008-07-10 14:17
 
316 Talk 0.3 atcode 플러그인. FrigateBird 14331   2009-12-22 2009-12-22 11:32
사용하면서 폰트셋 지정이 떨어져 나간 부분이 너무 횡하니 느껴지는데요. 그 부분에 코드 걸린것들을 표시하면 어떨까요. (별칭, 주소, 메모리 목록을.) 코드가 여러개 걸리면 그 조그마한 화살표로 왔다리 갔다리 하는것도 진절머리 납니다. ^^; 그리고 폰트...  
315 Archive FixLine v2 20090329 테스트버전 [6] file Hide_D 14317   2009-03-29 2009-03-29 15:51
 
314 Talk 정식 아랄 플러그인으로 요청하시고 싶다면 Hide_D 14234   2009-07-10 2009-07-10 18:29
원칙적으로는 관리자님께 요청하는 것이 맞지만 관리자님은 유니크 몹이시기 때문에[...] 절 부르시면 소환해 드립니다. 원클릭 서비스도 가능할지도[..]  
313 Talk 히데님께서 말씀하신 기리기리 오류문제 입니다. [3] file 유르_레릴 14130   2008-11-30 2008-12-30 08:53
 
312 OtherFiles CustomDic 090106 쓰레드 에러 도와주세요~ [2] file Hide_D 14035   2009-01-06 2009-01-06 20:47
 
311 Talk Vmware 가상 일윈으로 즐기기.. [3] file ㅌㅌ 14029   2008-07-23 2008-07-24 21:11
 
310 Archive [플러그인, 소스] OriginalText 테스트버전 [4] file Hide_D 13990   2008-09-12 2009-04-22 11:10