문자 인코딩 통일하기
한글이 포함된 텍스트는 UTF-8 기준으로 인코딩·디코딩해야 깨지지 않습니다. 예전 시스템의 EUC-KR 같은 인코딩과 섞이면 글자가 깨져 보입니다. Base64 문자열은 한 글자만 빠져도 디코딩이 실패합니다. 복사할 때는 결과 복사 버튼을 쓰고, 메신저를 거쳤다면 원본과 길이를 비교해 보세요.
의심스러울 때는 원본 텍스트의 인코딩을 먼저 확인하세요. 메모장에서 저장할 때 인코딩 옵션을 UTF-8로 지정하는 습관이 도움이 됩니다. 수만 자가 넘는 문자열은 문서 프로그램에서 자동 서식이 적용되며 변형될 수 있습니다. 워드프로세서보다 순수 텍스트 편집기에 보관하세요.
왕복 검증은 가장 확실한 품질 보증입니다. 인코딩한 결과를 바로 디코딩해서 원본과 비교해 보세요. 내용이 일치하면 변환 과정에 문제가 없다는 뜻입니다. 중요한 데이터를 전달하기 전에는 이 10초 검증을 습관화하세요.
문자열 무결성 지키기
바이너리 파일이라면 해시값 비교가 더 확실합니다. 원본과 디코딩 복원본의 SHA256이 같으면 바이트 단위로 동일하다는 증거가 됩니다. 인코딩 결과는 원본보다 약 33% 길어지므로, 전달할 때는 원본 텍스트 자체를 보내는 편이 낫습니다. 문자열 전달은 작은 데이터에 한정하세요.
줄바꿈이 들어간 문자열은 디코딩 전에 제거하거나, 도구가 허용하는 형태인지 확인하세요. 공백 한 칸도 오류의 원인이 됩니다. 문자 수 세기 도구와 함께 쓰면 길이 확인이 편합니다. 복사한 문자열을 붙여넣어 자릿수를 바로 볼 수 있습니다.
긴 문자열을 다룰 때는 '길이'라는 숫자를 활용하세요. 인코딩 전후의 길이를 메모해 두면, 전달 과정에서 잘렸는지 바로 알 수 있습니다. 받는 쪽에서도 길이 대조를 요청하면 검증이 쉬워집니다. 검수 체크리스트를 만드세요. 확인할 항목들을 순서대로 적은 겁니다. 매번 같은 항목을 보면 실수가 줄어듭니다. 체크리스트는 종이에 적어도 됩니다. 항목이 10개를 넘으면 안 됩니다. 핵심만 뽑으세요.
긴 문자열 관리
한글 처리에서 가장 골치 아픈 것은 '보이지 않는 차이'입니다. 같은 '가'자도 정규화 방식(NFC/NFD)에 따라 바이트가 다릅니다. 맥에서 입력한 한글과 윈도우에서 입력한 한글이 인코딩 결과가 다를 수 있는 이유입니다.
이런 경우 원본 텍스트를 먼저 정규화한 뒤 인코딩하는 것이 좋습니다. 의심스러우면 영문·숫자로 테스트해 인코딩 자체의 문제인지, 한글 처리의 문제인지 구분하세요. 중요한 변환은 디코딩해서 원본과 대조해 보는 왕복 검증을 권장합니다. 인코딩 후 바로 디코딩해 내용이 일치하는지 확인하면 실수를 조기에 잡을 수 있습니다.
긴 문자열을 다룰 때는 원본 문자열의 무결성이 출발점입니다. 중간이 잘린 문자열을 인코딩하면 잘린 결과가 나옵니다. 인코딩 전에 원본이 통째로 복사됐는지 먼저 확인하세요. 특히 메신저를 거친 문자열은 겉보기엔 멀쩡해도 뒤가 잘려 있을 수 있습니다.
검증 습관
샘플 비교를 습관화하세요. 설정 A와 설정 B의 결과를 나란히 보는 겁니다. 눈대중보다 비교가 정확합니다. 비교는 100% 크기에서 하세요. 축소 상태에서는 차이가 안 보입니다. 비교가 최고의 판단 기준입니다. 버전을 관리하세요. 다듬을 때마다 버전을 올리는 겁니다. v1, v2처럼 번호를 붙이세요. 이전 버전이 있어야 비교할 수 있습니다. 덮어쓰면 비교할 수 없습니다. 버전 관리가 실험을 자유롭게 만듭니다.
보는 환경을 통일하세요. 모니터 밝기나 주변 조명에 따라 결과물이 다르게 보입니다. 평소 환경에서 판단하세요. 밝기를 최대로 올리면 결함이 과장돼 보입니다. 실제 보는 환경이 기준입니다. 스마트폰으로도 확인하세요. 타인의 눈을 빌리세요. 혼자 보면 익숙해져서 문제를 못 봅니다. 동료에게 한 번 봐달라고 하세요. 1분이면 됩니다. 남의 눈은 내 눈과 다릅니다. 작은 지적이 큰 품질을 만듭니다. 부탁하는 걸 주저하지 마세요.
인쇄용 검수는 따로 하세요. 화면에서 괜찮아도 인쇄하면 다를 수 있습니다. 중요한 인쇄물은 시험 인쇄를 하세요. 시험 인쇄 한 장이 본 인쇄 수백 장을 구합니다. 색상과 선명도를 확인하세요. 인쇄는 되돌릴 수 없습니다.
자주 묻는 질문
한글이 ???로 깨져요.
문자 인코딩 불일치가 원인일 가능성이 큽니다. 원본을 UTF-8로 다시 저장한 뒤 인코딩하고, 디코딩 환경도 UTF-8인지 확인하세요.
디코딩했더니 내용이 잘렸어요.
입력 문자열이 중간에 잘렸을 가능성이 큽니다. 원본 문자열 전체를 다시 복사해 길이를 비교해 보세요.
특수문자가 포함된 문자열도 되나요?
네. Base64는 바이트 단위 변환이라 어떤 문자든 처리할 수 있습니다. 단, 앞뒤 과정의 문자 인코딩은 통일되어야 합니다.