배경
faiss.write_index(faiss_index, f"data\\index\\{index_name}.index")
여기서 인덱스 파일 제목(index_name) 이 한글인 경우 저장 안됨, 그렇다고 아무 영어이름으로 바꾸긴 싫었음.
고유 제목의 개성을 유지하면서 변환하는 방식을 모색
해결과정 : base64를 통한 제목 변환
import base64
name="백년!@#$%^&*()_+[]{};',.//*-+."
print(name)
-> 백년!@#$%^&*()_+[]{};',.//*-+.
# 1. 문자열을 바이트로 변환
print(name.encode('utf-8'))
-> b"\xeb\xb0\xb1\xeb\x85\x84!@#$%^&*()_+[]{};',.//*-+."
# 2. 바이트화된 데이터 base64로 변환
print(base64.urlsafe_b64encode(name.encode('utf-8')))
-> b'67Cx64WEIUAjJCVeJiooKV8rW117fTsnLC4vLyotKy4='
# 3. 바이트 데이터를 다시 문자열로 변환
print(base64.urlsafe_b64encode(name.encode('utf-8')).decode('utf-8'))
-> 67Cx64WEIUAjJCVeJiooKV8rW117fTsnLC4vLyotKy4=
encoded_name= base64.urlsafe_b64encode(name.encode('utf-8')).decode('utf-8')
# 4. 다시 원본으로 변환
decoded_name = base64.urlsafe_b64decode(encoded_name.encode('utf-8')).decode('utf-8')
print(decoded_name)
-> 백년!@#$%^&*()_+[]{};',.//*-+.
결론
- base64를 통해 변환된 제목들은 원본의 특성을 유지하면서, 한글 인식이 안되는 환경에서 사용될 수 있다.