Windows 7 64 비트, Python 3, MongoDB 및 PyMongo를 사용하고 있습니다. 파이썬 3에서는 모든 문자열이 유니 코드라는 것을 알고 있습니다. 또한 MongoDB가 모든 문자열을 유니 코드로 저장한다는 것도 알고 있습니다. 그래서 왜, 특정 필드의 값이 "C : \ Some Folder \ E = mc².xyz"인 데이터베이스에서 문서를 가져올 때, 파이썬은 그 문자열을 "C : \ Some Folder \ E = mc².xyz ". 그렇게 인쇄하는 것이 아닙니다. os.path.exists()는 False를 반환합니다. 이제는 충분히 혼란스럽지 않은 것처럼 문자열을 텍스트 파일에 저장 한 다음 "utf-8"로 명시 적으로 설정된 인코딩으로 열면 문자열이 올바르게 표시되고 os.path.exists() True를 반환합니다. 무엇이 잘못 되었습니까? 어떻게 수정합니까?Python 3에서 MongoDB의 유니 코드 문자열을 올바르게 처리하는 방법은 무엇입니까?
편집 : 당신이 볼 수 있듯이
from pymongo import MongoClient
db = MongoClient().test_db
orig_doc = {'string': 'E=mc²'}
_id = db.test_col.insert(orig_doc)
new_doc = db.test_col.find_one(_id)
print(new_doc['string'])
>>> E=mc²
, 정확히 예상대로 작동합니다 여기 난 그냥 내 문제를 보여주기 위해 쓴 일부 코드입니다! 따라서 PostgreSQL에서 이전했을 때 나는 엉망이되었음을 깨달았습니다. 이제 문자열을 수정하면됩니다. 가능하다는 것을 알고 있지만 문자열을 텍스트 파일에 쓰고 다시 읽는 것보다 나은 방법이 있어야합니다. I 은 일 수 있습니다. 이전 테스트에서했던 것처럼, 올바른 방법처럼 보이지 않습니다.
일부 코드를 포함 할 수 있습니까? 인코딩을 지정하는 설정이나 호출이 누락 된 것 같습니다. 실제로 잘못된 정보는 없습니다. 잘못된 인코딩으로 만 데이터를 다시 가져옵니다. –