자주 이러면 잠수함에서 감자 깎아야 하는 프로그래머

자주 이러면 잠수함에서 감자 깎아야 하는 프로그래머
Submitted by hyacinth @
다음은 C#에서 비동기로 HTTP 요청를 보내는 코드의 일부다. 머리 노란 애들이 작성한 코드를 볼 때 유니코드 인코딩 부분은 가장 찾기 흔한 실수 중 하나다.


이 코드는 UTF-8 인코딩으로 2바이트 이상 되는 문자를 전송하려고 하면 프로그램이 죽는다. 영어로만 전송을 하면 이상을 알아차리기 힘든 코드다. 이렇게 수정되어야 한다.

postStream.Write(byteArray, 0, postData.Length);

postStream.Write(byteArray, 0, byteArray.Length);

UTF-8에서 영어 알파벳은 1바이트기 때문에 postData.Length도 문제가 없었겠지만 바이트 스트림이라면 문자열 길이보다 길어질 수 있기 때문에 바이트 길이로 보내야 한다. 기껏 문자열에서 유니코드 바이트로 바꿔놓고 프로래머가 쓰다가 졸았나보다.

» track back

이 글에는 0 개의 댓글이 있습니다.