자주 이러면 잠수함에서 감자 깎아야 하는 프로그래머
자주 이러면 잠수함에서 감자 깎아야 하는 프로그래머
다음은 C#에서 비동기로 HTTP 요청를 보내는 코드의 일부다. 머리 노란 애들이 작성한 코드를 볼 때 유니코드 인코딩 부분은 가장 찾기 흔한 실수 중 하나다.
이 코드는 UTF-8 인코딩으로 2바이트 이상 되는 문자를 전송하려고 하면 프로그램이 죽는다. 영어로만 전송을 하면 이상을 알아차리기 힘든 코드다. 이렇게 수정되어야 한다.
postStream.Write(byteArray, 0, postData.Length);,#color:#990000#
postStream.Write(byteArray, 0, byteArray.Length);,#color:#38761D#
UTF-8에서 영어 알파벳은 1바이트기 때문에 postData.Length도 문제가 없었겠지만 바이트 스트림이라면 문자열 길이보다 길어질 수 있기 때문에 바이트 길이로 보내야 한다. 기껏 문자열에서 유니코드 바이트로 바꿔놓고 프로래머가 쓰다가 졸았나보다.