python django 上傳檔案 檔案名稱為中文報錯

來源:互聯網
上載者:User

以上是報錯截圖和記錄檔 網上能找到的相對比較靠譜的解決方案是下面的 ,但是下面方法只能解決請求參數中有中文 然後中文亂碼的問題,不能處理上傳中文名稱的檔案儲存出錯的問題。兩個報錯 position 0-4 不一樣 UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-4: ordinal not in range(128)

先說解決方案: ?

1 2 3 import  sys reload(sys) sys.setdefaultencoding( 'utf-8' )
即在代碼檔案開始先匯入sys包,然後在代碼裡調用修改預設編碼方式的方法setdefaultencoding
下面解釋原因:這個問題是由於Unicode編碼與ASCII編碼的不相容造成的。
首先在不添加以上代碼的前提下先查看python調用的預設編碼:
?
1 2 import  sys print sys.getdefaultencoding()
通常都是ascii,由此 Python 自然調用ascii編碼解碼程式去處理字元流,當字元流不屬於ascii範圍內,就會拋出異常(ordinal not in range(128))。所以解決方案就是修改預設編碼,需要注意的是需要先調用reload方法。
?
1 2 reload(sys) sys.setdefaultencoding( 'utf-8' )

本文為Eliot原創,轉載請註明出處:http://blog.csdn.net/xyw_blog/article/details/18214399 ?
1 2 3 <pre  class = "brush:java;" ></pre> <pre  class = "brush:java;" ></pre> <pre  class = "brush:java;" ></pre>      

以上是解決請求參數中有中文的方法
檔案名稱為中文上傳報錯修改方法核心思想是修改作業系統預設字元集,修改後的結果如下
執行   sudo locale-gen   命令

配置目前使用者的環境變數 .bashrc 增加下面配置
查看當前配置

使ubuntu正常顯示GB2312、GBK編碼檔案
ubuntu環境設定的字元集utf8,windows預設字元集是GBK,Ubuntu的預設字元集為utf-8,這使 

得在用telnet登入遠程伺服器或查看windows檔案時出現亂碼。需要將ubuntu環境設定為GBK或GB2312,或設定軟體使其正確顯示漢 字。下面以GBK字元集為例進行說明:

一、修改Ubuntu預設字元集為GBK
1、首先設定sudo vi /var/lib/locales/supported.d/local
     添加一行 zh_CN.GBK GBK
     sudo locale-gen產生locale

2、修改ubuntu的字元集
    方法一: 修改使用者目錄下的.profile檔案,增加以下內容:
         LANGUAGE=”zh_CN:zh:en_US:en”
         LANG=zh_CN.GBK
       重新登入即可。
         這個方法只對該使用者有效。
     方法二:修改/etc/environment,增加以下內容:
         LANGUAGE=”zh_CN:zh:en_US:en”
         LANG=zh_CN.GBK
         然後重啟X即可
   這個方法對沒有設定LANG及LANGUAGE環境變數的使用者有效

二、設定軟體命名其正常顯示GBK
      這需要軟體本身支援多字元編碼,最常見的是IE等瀏覽器,可以通過設定編碼顯示GBK字元集。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.