Я использую 64-разрядную версию Windows 7, Python 3, MongoDB и PyMongo. Я знаю, что в Python 3 все строки имеют юникод. Я также знаю, что MongoDB хранит все строки в формате unicode. Поэтому я не понимаю, почему, когда я извлекаю документ из своей базы данных, где значением определенного поля является «C:\Some Folder\E=mc².xyz», Python обрабатывает эту строку как «C:\Some Folder\ E=mc².xyz". Он не просто печатает таким образом; os.path.exists() возвращает False. Теперь, как будто это недостаточно запутанно, если я сохраню строку в текстовый файл, а затем открою его с явно установленной кодировкой «utf-8», строка появится правильно, и os.path.exists() возвращает Истина. Что происходит не так и как это исправить?
Изменить: вот код, который я только что написал, чтобы продемонстрировать свою проблему:
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. Теперь мне просто нужно починить струны. Я знаю, что это возможно, но должен быть лучший способ, чем запись строк в текстовый файл, а затем чтение их обратно. Я мог сделать это так же, как и в предыдущем тестировании, но мне кажется, что это неправильный путь.