WebView可以处理包含中文的url吗?

时间:2016-07-11 01:15:25

标签: android webview

我只是使用webview的隐藏方法上传一个名称中文的文件,如下所示:

public void openFileChooser(ValueCallback<Uri> uploadMsg) {

            mUploadMessage = uploadMsg;
            Intent i = new Intent(Intent.ACTION_GET_CONTENT);
            i.addCategory(Intent.CATEGORY_OPENABLE);
            i.setType("image/*");
            ((Activity) mContext).startActivityForResult(
                    Intent.createChooser(i, "File Chooser"),
                    WebViewActivity.FILECHOOSER_RESULTCODE);

        }

        // For Android 3.0+
        public void openFileChooser(ValueCallback uploadMsg,
                String acceptType) {
            mUploadMessage = uploadMsg;
            Intent i = new Intent(Intent.ACTION_GET_CONTENT);
            i.addCategory(Intent.CATEGORY_OPENABLE);
            i.setType("*/*");
            ((Activity) mContext).startActivityForResult(
                    Intent.createChooser(i, "File Browser"),
                    WebViewActivity.FILECHOOSER_RESULTCODE);
        }

        // For Android 4.1
        public void openFileChooser(ValueCallback<Uri> uploadMsg,
                String acceptType, String capture) {
            mUploadMessage = uploadMsg;
            Intent i = new Intent(Intent.ACTION_GET_CONTENT);
            i.addCategory(Intent.CATEGORY_OPENABLE);
            i.setType("*/*");
            ((Activity) mContext).startActivityForResult(
                    Intent.createChooser(i, "File Chooser"),
                    WebViewActivity.FILECHOOSER_RESULTCODE);

        }
    });

此代码运行良好,我可以成功上传文件而无需中文字符。当我选择一个名字有中文字符的文件时出现问题,然后我得到这样的回调:

if (null == mUploadMessage) return;    
                    Uri result = intent == null || resultCode != RESULT_OK ? null : intent.getData();  
                    mUploadMessage.onReceiveValue(***result***);    
                    mUploadMessage = null;

这个结果是URI的类型,它的路径包含中文,然后出现问题,WebView给出了一个例外: net::ERR_FILE_NOT_FOUND,我尝试使用utf-8格式化Uri的路径,但它不起作用。

有没有人遇到过这个问题?我一直在为此烦恼3天,谁能帮助我,非常感谢!!!

1 个答案:

答案 0 :(得分:0)

可以通过w3c将中文改为iso8859或其他人