MaxCompute客戶端(odpscmd)在windows命令行下查詢中文亂碼問題處理實踐

MaxCompute客戶端工具是阿里雲大數據計算服務MaxCompue產品官方客戶端工具,通過客戶端工具可以連接MaxCompute項目,完成包括數據管理、數據上下傳、作業執行、用戶及授權管理等各項操作。
但有用戶會碰到在Windows下的命令行中執行odpscmd後,查詢包含中文字符的表數據時出現亂碼的情況,本文將給出問題分析和解決方法,幫助大家快速處理這樣的問題。

問題描述:
Windows用戶下載配置配置客戶端(odpscmd)後,在查詢包含中文字符的表數據時,會出現亂碼情況,如下圖所示:
MaxCompute客戶端(odpscmd)在windows命令行下查詢中文亂碼問題處理實踐

問題分析:
MaxCompute對中文默認使用utf-8字符集的編碼方式,客戶端亂碼的原因是因爲用戶訪問的客戶端側(也就是windows下的cmd命令行)沒有使用utf-8對查詢反饋的字符進行解析展示,所以需要查看cmd的當前顯示字符設置是否爲utf-8,如果不是需要修改爲utf-8後進行查詢,即可正確展示。

操作方法:
1.驗證Windows的cmd的當前字符設置。在cmd中執行chcp命令,並回車:
MaxCompute客戶端(odpscmd)在windows命令行下查詢中文亂碼問題處理實踐
如上圖,查詢結果爲936,代表當前代碼頁爲簡體中文GBK

修改爲utf-8。同樣在cmd中執行命令chcp 65001,並回車:
MaxCompute客戶端(odpscmd)在windows命令行下查詢中文亂碼問題處理實踐
3.通過cmd的屬性,修改cmd的字體
chcp 65001後還不能直接在odpscmd中正常查看中文,還需要在cmd的屬性窗口的“字體”欄中,選擇"點陣字體"之外的字體,如"Lucida Console"或者"新宋體"等字體。
MaxCompute客戶端(odpscmd)在windows命令行下查詢中文亂碼問題處理實踐
修改完畢後,會發現在cmd屬性的"選項"欄中的"當前代碼頁"的字符設置已經修改爲65001(UTF-8)
MaxCompute客戶端(odpscmd)在windows命令行下查詢中文亂碼問題處理實踐

修改並確定之後,執行odpscmd並重新查詢含有中文的表
MaxCompute客戶端(odpscmd)在windows命令行下查詢中文亂碼問題處理實踐
想永久的更改cmd編碼值需要修改註冊表,在運行中通過regedit進入註冊表,找到HKEY_CURRENT_USERConsole%SystemRoot%_system32_cmd.exe,新建一個 DWORD(32位值),命名爲CodePage,值設爲65001 .

更多信息,可以自行搜索chcp相關的使用文章。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章