My Calendar

2016年8月2日 星期二

Uri.fromFile中文亂碼

Uri.fromFile 中文亂碼

最近在開發 APP 的時候發現有某部分拍照後有確認和取消按鈕的手機會讓整個 APP 崩潰。花了一些時間最後找到兇手原來就是 Uri.fromFile已知 ASUS_T00P 會有這個問題。

URl使用中文去訪問是沒有問題的,因为android在內部進行了轉碼。 但是從URL獲取文件名的時候,因为android已經轉過碼,所以得到的就是亂碼了。如果一定需要中文路徑或是中文檔案名稱,可以用到android提供的方法Uri.decode()獲取正確的中文路徑或是直接使用Uri.parse()


 String imageRef= "/mnt/sdcard/測試.jpg";;
 File f = new File(imageRef);
 Uri uri = Uri.fromFile(f); //會造成檔案亂碼
 Uri uri =  Uri.parse("file://"+imageRef.getPath()); // 使用Uri.parse()
 Uri uri =  Uri.parse(Uri.decode(path)); // 使用Uri.decode() 轉碼