2014-11-22 51 views
2

我正在編寫一個Django應用程序讓用戶輸入一個文件名並執行一些過程。在正常情況下,如果用戶輸入文件名只包含字母數字字符,則過程將正常結束。Django表單提交Unicode字符

如果用戶輸入的文件名包含Unicode字符(如中文或日文),則該過程將以異常(HTML 500錯誤)結束。我檢查提交給服務器的表單數據,文件名稱字段將轉換爲Unicode字符串,例如

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

在這種情況下,例如,使用pyminizip來壓縮文件,它會引發異常錯誤和進程停止。

有沒有什麼辦法可以將unicode字符串轉換回原始文本,如中文或日文字符?

感謝,

回答

0

Django的處理形式使用其default charset的形式。這看起來更像是一個數據處理或存儲問題。根據所使用的數據庫上,默認的字符編碼將有所不同:

  1. MySQL - LATIN1
  2. PostgreSQL - 由locale變化。

我會改變數據庫的字符集或在數據到達那裏之前轉換數據。

+0

感謝您的諮詢。我沒有問題更新到數據庫的信息,但我的問題是當我從request.POST獲取文件名,我需要打開指定的文件,但因爲文件名更改爲Unicode字符串,引發異常。所以我需要找出如何將文件名的Unicode字符串更改爲原始的中文或日文字符,以便我可以從程序訪問該文件。 – user2114189 2014-11-25 02:49:22