關於Android程式設計檔案路徑中含有中文字元的問題解決辦法
感謝分享 http://blog.sina.com.cn/s/blog_5342e45b01012fu2.html
在網上看到有朋友說,在Android程式設計中如果實現檔案的上傳下載過程中,如果遇到檔案路徑中有中文,比如/sdcard/測試文件.txt或者d:/計算機.xls就會丟擲FileNotFoundException的異常,很多論壇中提示大家用URLEncoder.encode()方法來解決,但是很多人在嘗試了該方法之後並沒有很好的解決問題。
於是在跟同學交流一番後,鄙人小試一把終於解決了這個問題,在解決這個問題之前,我們先看一下有關的API,在String裡面,有個getBytes(String charsetName)方法,使用指定的字符集將此String編碼成為byte序列,提到了字符集的問題,同樣在URLEncoder.encode(String s, String enc)中也提到了相同的概念,於是我們在取得解決方案之前查了一下常用字符集。在開啟eclipse的時候,我們在視窗-首選項-常規-工作空間中看到了這個選項,於是發現文字檔案編碼為WINDOWS預設的GBK,於是我們在服務端把從客戶端那邊傳過來的字串path,進行了如下處理:
String newPath = URLEncoder.encode(path, "GBK");
File file = new File(newPath);
但是發現結果還是不對,於是我們考慮是不是因為是Android客戶端那邊傳來的中文編碼有問題,測試的時候,在Android端直接對中文字串進行了不同的編碼方式,考慮到linux下面的編碼方式為UTF-8,而Android的核心為linux,做了一下測試:
String test = "測試";
textView1.setText((new String(test.getBytes("GBK"))));
textView2.setText((new String(test.getBytes("UTF-8"))));
果然GBK出來的結果是亂碼,於是,在考慮兩遍編碼方式不同的問題,我把eclipse中的文字檔案編碼改成了UTF-8以跟android裝置匹配,之後在客戶端對String格式的路徑進行getBytes("UTF-8");再進行傳輸,測試順利通過了。沒想到作業系統不同,編碼方式不同的問題成了一個障礙,另外多提一句,GBK中,一個漢字所佔位元組數是2,而UTF-8中,一個漢字所佔位元組數是3,有需要的朋友還要多多注意。
相關文章
- Java讀取檔案中含有中文的解決辦法 (轉)Java
- 關於Android檔案數過大,分包問題的解決辦法Android
- 程式設計中對於檔案路徑應該注意的問題程式設計
- XML檔案中url路徑中&失效解決辦法XML
- 關於GDAL180中文路徑不能開啟的問題分析與解決
- 關於PHP程式設計師解決問題的能力PHP程式設計師
- svn相關問題解決辦法
- 關於python操作帶有中文檔名報錯的解決辦法Python
- java多執行緒程式設計問題以及解決辦法Java執行緒程式設計
- 關於從其他程式切回word文件時卡頓問題的解決辦法
- 徹底解決java WEB專案的檔案路徑問題(war包)JavaWeb
- 關於jdon論壇的jive_init.properties檔案路徑配置問題
- Zuul上傳檔案,中文檔名亂碼解決辦法Zuul
- docker網路問題解決辦法“大全”:關於宿主機訪問不了docker容器中web服務,或者容器內訪問不了外網的問題的解決辦法DockerWeb
- 【Salesforce問題解決】Dataloader匯出的檔案亂碼或者問號的解決辦法Salesforce
- 關於解壓zip檔案的問題
- 檔案路徑問題( ./ 和 ../ 和 @/ )
- fstream預設不支援中文路徑和輸出整數帶逗號的解決辦法
- 關於網路重置後無法聯網的解決辦法
- vue 關於圖片路徑的問題Vue
- 解決基於TypeScript 的 RN專案相對路徑引入元件的問題TypeScript元件
- 關於 resgen.exe已退出 程式碼為 2 的錯誤問題的解決辦法。
- 關於Oracle 9i字符集問題的解決辦法FCOracle
- 由於歸檔路徑設定不當,系統無法響應的問題
- libreoffice轉換檔案為pdf檔案亂碼問題解決辦法
- 檔案無法粉碎解決辦法
- 解決eclipse中對於中文字元的識別問題Eclipse字元
- Windows程式讀取不了中文路徑問題Windows
- 讀取web專案properties檔案路徑 解決tomcat伺服器找不到properties路徑問題WebTomcat伺服器
- 關於Vue修改預設的build檔案存放的dist路徑VueUI
- cocos2dx3.2 關於計算兩點向量normalize問題的解決辦法ORM
- 關於listener無法啟動的問題解決
- 關於網路硬體配置出現問題,無法上網問題的解決
- rac中文名檔名新增到本地路徑解決辦法(ORA-01157)-非歸檔
- 關於JDK1.2的JDBC中文問題的解決 (轉)JDKJDBC
- 關於 SAP ABAP gateway OData 的一個詭異問題及解決辦法Gateway
- 常見php與mysql中文亂碼問題解決辦法PHPMySql
- DotNetZip解決檔名稱中文字元不顯示的問題字元