[목차] == 개요 == [[Windows XP]], [[Windows 2000]]의 [[메모장#s-2]]에서 [[ANSI]] 인코딩으로 저장된 문자열을 [[유니코드|UTF-16]]으로 읽어서 발생하는 [[버그]]. == 증상 == 메모장에 Bush hid the facts처럼 4-3-3-5개의 글자로 이루어진[* 4-3-3-5개의 글자로 이루어진 문장이라고 해서 꼭 버그가 발생하는 것도 아니며, 4-3-3-5 패턴이 아닌 문장에서 버그가 발생하기도 한다. 줄바꿈 문자가 들어가면 버그가 발생하지 않는다고 한다.] 문장을 작성하고 ANSI 인코딩으로 저장하면 그 파일을 다시 열었을 때 문장 대신 한자들로 바뀐다.[* 일부 한자는 확장 한자에 속하기 때문에 메모장 기본 글꼴인 'Fixedsys'에서는 사각형 모양으로 나온다. 이 경우 글꼴을 바꿔주면 제대로 나온다.] 다음 한자들은 별 의미가 없다.[* 끝의 捡獴 때문에 [[구글 번역기]]를 돌리면 "[[몽구스]]를 집어든다"라고 나오고 [[파파고]]를 돌리면 "[[미어캣]]을 줍는다"라고 나왔으나 현재는 구글에선 '몽구스', 파파고에선 '몽구스 줍기' 라고 뜬다.] * '''B'''ush hid the facts: '''畂'''桳栠[[摩]][[琠]]敨[[映]][[捡]]獴 * '''b'''ush hid the facts: '''[[畢]]'''桳栠摩琠敨映捡獴 == 원인 == ASCII 형태의 텍스트 파일을 UTF-16으로 읽어서 벌어진다. UTF-16으로 해석했을 때 보통 U+6100부터 U+7AFF에 이르는 영역의 문자로 해석되는데, 이 문자들은 모두 [[한자]]에 속하므로 결과물은 항상 한자로 나온다. [[Windows XP]]의 메모장에는 [[BOM]]이 없어도 해당 파일이 유니코드인지 구별하기 위해 [[Windows API]]의 {{{IsTextUnicode}}} 함수를 사용하는데, 이게 Bush hid the facts와 같은 일부 텍스트를 UTF-16으로 인식되어버려서 발생한다. [[Windows Vista]]에 내장된 메모장부터는 구현 방식을 바꿨는지 버그가 고쳐졌지만, API 자체의 버그는 고쳐지지 않았기 때문에 해당 API를 사용하는 프로그램들은 여전히 버그가 발생한다. 참고로 [[Windows 98]]이나 [[Windows Me]]의 메모장은 유니코드를 지원하지 않기 때문에 해당 버그가 일어날 여지가 없다. Bush hid the facts를 UTF-16 형식으로 인식하면 글자가 2바이트씩 묶이며, Little Endian 형식의 경우 묶인 바이트가 순서가 뒤바뀐다. 아래에서는 편의상 16진수가 아닌 문자로 표기한다. * Big Endian: {{{B-u / s-h / (Space)-h / i-d / (Space)-t / h-e / (Space)-f / a-c / t-s}}} * Little Endian: {{{u-B / h-s / h-(Space) / d-i / t-(Space) / e-h / f-(Space) / c-a / s-t}}} 참고로 4-3-3-5 형식이 아니더라도 버그가 발생하는 경우가 있기는 하며, 반대로 4-3-3-5 형식이라도 버그가 발생하지 않는 경우도 있다. 또한 이 버그는 텍스트 파일이 '''짝수''' 바이트일 때에만 발생하며, '''홀수''' 바이트일 경우에는 발생하지 않는다. UTF-16의 경우에는 2바이트(~ U+FFFF)와 4바이트(U+10000 ~)만 사용하기 때문인데, 홀수 바이트일 경우에는 UTF-16일 가능성이 없기 때문에 변환을 하지 않는 것. 한자로 바뀐 내용을 지우고 다시 Bush hid the facts라고 적고 저장을 하면 버그가 발생하지 않는다는 말이 퍼지기도 했는데, 이는 위에서 말했듯이 UTF-16 형식으로 저장이 되었기 때문이다. 즉 텍스트 형식이 ASCII에서 UTF-16으로 바뀌어서 그렇다는 것. == 기타 == 메모장의 또다른 버그로는 "자동 줄바꿈" 기능 관련 버그가 있다. [[Windows NT 3.51]]에서부터 [[Windows 7]]에도 있는 버그이다.[* 다만 [[Windows 9x]] 계열에서는 발생하지 않는다.] 이 버그는 [[Windows 10]] RS3 기준 해결된 상태이다. 설명하자면 자동 줄바꿈이 설정된 상태에서 텍스트 파일을 저장하고 창 크기를 조절하면 줄바뀜 부분이 [[강제 줄 바꿈]]된 것처럼 잘려서 나오는 현상이다.[* 물론 실제 텍스트 파일까지 강제 개행이 된 것은 아니라서, 메모장을 껐다 켜면 정상적으로 돌아온다.] 텍스트를 잠깐 열어보기만 할게 아니라면 차라리 [[워드패드]]를 쓰는 것이 편할지도 모른다. 그리고 만약 코딩이 목적이라면 메모장이나 워드패드 대신 [[Notepad++]]나 [[EditPlus]] 등의 전문 편집기를 쓰는 것이 좋다. 몇몇 커뮤니티에서는 하필이면 원문이 '[[조지 W. 부시|부시]]가 진실을 숨겼다'인 것과 당시 [[9.11 테러]], [[이라크 전쟁]] 등과 관련된 음모론과 엮여서 해당 인코딩 버그로 나온 한자를 '진실은 곧 밝혀진다'와 같이 해석하는 경우가 있는데[* [[스펀지(KBS)|스펀지]]에서도 이 뜻으로 해석했으며, [[대만]]의 어느 커뮤니티에서도 이와 같은 해석이 나왔다고 한다.], 위에서 말했듯이 이는 버그일 뿐이다. 즉 해당 한자들은 아무 의미가 없다. 저 버그가 발생한 OS인 [[Windows XP]]가 2001년 10월에 나왔기에 [[9.11 테러]]와 절묘하게 시기가 겹쳐서 저렇게 알려진 것일 뿐이다. 물론 상술했듯 저 버그는 [[Windows 2000]]에도 존재한다. [[분류:버그]]