gpt4 book ai didi

安卓 WebView PostUrl UTF-8

转载 作者:行者123 更新时间:2023-11-29 17:31:32 29 4
gpt4 key购买 nike

在以前的 Android 版本中这是有效的(需要发布 utf-8 参数):

postData = "action=login&User=عربى&password=1@#(u)&^%$";
webview.postUrl(url, EncodingUtils.getBytes(postData, "UTF-8"));

但在 Android 5 和 6 中,他们删除了默认情况下不可用的 apache 包和 EncodingUtils.getBytes,我不想手动加载它。

如何将 postData 本地编码为 utf-8,然后将其转换为字节以webview.postUrl,尝试过类似的方法但没有成功:

    final Charset UTF8_CHARSET = Charset.forName("UTF-8");
try {
postData = URLEncoder.encode(postData, "utf-8").replaceAll("\\+", "%20");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
browser.postUrl(url, postData.getBytes(UTF8_CHARSET));

最佳答案

查看EncodingUtils.getBytes的定义,它只是调用了StringgetBytes函数。

因此,即使您没有 EncodingUtils.getBytes,您也可以像这样在 String 上调用 getBytes:

webview.postUrl(url,postData.getBytes( "UTF-8"));

或者您可以复制原始的 EncodingUtils.getBytes 函数:

public static byte[] getBytes(final String data, final String charset) {


if (data == null) {
throw new IllegalArgumentException("data may not be null");
}


if (charset == null || charset.length() == 0) {
throw new IllegalArgumentException("charset may not be null or empty");
}


try {
return data.getBytes(charset);
} catch (UnsupportedEncodingException e) {
return data.getBytes();
}
}

https://github.com/android/platform_external_apache-http/blob/master/src/org/apache/http/util/EncodingUtils.java

关于安卓 WebView PostUrl UTF-8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32675312/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com