為了方便記錄、收藏,一般情況下,搜索功能會采用http GET方式提供,類似的URL:
- /search?keyword=測試
整個webapp統一采用UTF-8格式編碼(包括頁面Content-Type)
- <meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
在獲取keyword參數的時候,頁面表單的提交的參數將會是預期的編碼格式,但是如果是直接用“/search?keyword=測試”通過浏覽器地址欄訪問,浏覽器將會根據系統環境(設置)對參數進行編碼(windows下,FF,Opera一般為GBK;linux下,一般為UTF-8),GBK/GB2312的編碼格式,在代碼中將會導致一些錯誤,如: 字符串亂碼問題、MongoDB統一使用UTF-8做為存儲編碼。
開始想嘗試python中如何查看字符串的編碼格式,但是沒有找到適合的方法,現采取如下方式,對參數進行編碼(針對大多數的中文用戶)
- def _process_keyword_coding(self, keyword):
- try:
- keyword = unicode(keyword, "utf-8")
- except:
- keyword = keyword.decode("gbk").encode("utf-8")
- return keyword
頁面的流程下,是可以通過utf-8編碼的,否則將采取GBK方式進行解碼,然後再轉換成統一的UTF-8格式,(當前使用的是python 2.6, python3.0 str默認情況下將會統一采取unicode)
這裡筆記下,如果有更好的方法,請大家分享