JavaScript와 UTF-8
브라우저에는 btoa()와 atob()가 있지만 이 함수들은 바이트 같은 문자열을 다룹니다. 중국어 텍스트나 emoji를 직접 넣으면 오류가 나거나 문자가 손상될 수 있습니다.
UTF-8 바이트 사용
인코딩 전에는 TextEncoder로 텍스트를 변환하고, 디코딩 후에는 TextDecoder를 사용하세요. 이렇게 해야 다국어 폼 데이터가 유지됩니다.
const bytes=new TextEncoder().encode(text); const encoded=btoa(String.fromCodePoint(...bytes)); const decoded=new TextDecoder().decode(Uint8Array.from(atob(encoded),c=>c.charCodeAt(0)));파일 처리
작은 미리보기에는 FileReader를 쓰고 큰 파일은 ArrayBuffer 청크로 처리하세요. 거대한 중간 문자열을 만들지 않는 것이 좋습니다. 온라인 인코더로 테스트할 수 있습니다.