2014-11-22 4 views
2

Я пишу приложение Django, чтобы пользователь мог ввести имя файла и выполнить некоторый процесс. В нормальном случае, если пользователь вводит имя файла, он содержит только буквенно-цифровые символы, процесс завершится нормально.Django Form Отослать Unicode Character

Если пользователь вводит имя файла, он содержит символы Юникода, такие как китайский или японский, процесс завершится с исключением (ошибка HTML 500). Я проверяю данные формы, представленные на сервер, поле имени файла будет преобразовано в юникод строки, например

"\u30a2\u30af\u30bb\u30b9\u6a29\u9650\u4f53\u7cfb\u5b9a\u7fa9\u66f8.xls" 

В этом случае, например, использовать pyminizip пронестись файлом, он будет поднимать ошибку исключения и остановка процесса.

Есть ли способ, которым я могу преобразовать строку юникода обратно в исходный текст, например, китайский или японский символ?

Спасибо,

ответ

0

Django обрабатывает форму с использованием его default charset для форм. Это больше похоже на проблему обработки данных или хранения. В зависимости от используемой базы данных, кодировка по умолчанию будет меняться:

  1. MySQL - latin1
  2. PostgreSQL - зависит от locale.

Я бы изменил набор символов вашей базы данных или преобразовал ваши данные, прежде чем он туда попадет.

+0

Спасибо за советы. У меня нет проблем с обновлением информации в БД, но моя проблема в том, что когда я получаю имя файла от request.POST, мне нужно открыть указанный файл, но поскольку имя файла изменилось на строку Unicode, исключение было поднято. Поэтому мне нужно выяснить, как изменить строку Unicode имени файла на оригинальные китайские или японские символы, чтобы я мог получить доступ к файлу из программы. – user2114189