blueooh / CPerl-Chat

bluechat.
3 stars 4 forks source link

Backspace 사용시 한글이 깨져서 출력되는 현상 #4

Closed newbcode closed 10 years ago

newbcode commented 10 years ago

현재 영문은 Backspace사용시 깨져서 출력되지는 않지만 한글인 경우는 글자를 입력후 Backspace를 사용해 삭제한후 출력하면 아래와 같이 출력되는 현상이 있음

[15:3:2]newb: M-c~E~Aㅇㄴ

newbcode commented 10 years ago

현재까지 예상되는 문제점으로는 아래와 같습니다.

  1. 각각의 터미널의 encoding 문제.
  2. 터미널의 특수문자 (backspace) 처리문제
  3. unicode의 3바이트 처리문제(현재 euc-kr은 encoding시 2바이트이지만 utf8은 3바이트를 사용)

가장 의심이 많이 되는 것은 3번 한글을 지울때 2바이트를 지우느냐 3바이트를 지우느냐.... 2바이트를 지우고 1바이트의 쓰레기값이 남아서...?

blueooh commented 10 years ago

테스트결과 한글 한글자를 지울때 백스페이스를 3번 눌러야 지워집니다.

blueooh commented 10 years ago

utf8에서 영어나 아스키 문자 같은경우 1byte, 한글 같은 경우 3byte로 처리됩니다. 즉 한글문자를 받을 때 3바이트를 모아서 한글자씩 처리를 하여 깨짐현상을 해결하였습니다.

blueooh commented 10 years ago

0aba2737ccfe771d24c3b9d00cfa19f921410da6

위의 커밋에서 해결되었습니다.