我遇到了字符串编码的问题。首先,让我解释一下背景:
我需要发帖并在webView中加载内容。对于这个要求,我需要使用webView.postUrl(String url,byte [] postData)。
我看到很多使用此方法的示例以及EncodingUtils.getBytes(“stringToEncode”,“base64”)。
好消息是这对我有用。坏消息是这个类已被弃用,您需要将下一个代码添加到gradle文件中:
android {
useLibrary 'org.apache.http.legacy'
}
我想避免这种情况并按原样使用。
据我所知,这个已弃用的类的替换是android.util.Base64。
我尝试了下一个代码但没有成功:
webView.postUrl("url", Base64.encode("paramsToEncode".getBytes(),Base64.DEFAULT));
webView.postUrl("url", Base64.encode("paramsToEncode".getBytes(StandardCharsets.UTF_8),Base64.DEFAULT));
根据EncodingUtils的文件:
将指定的字符串转换为字节数组。如果charset不是 支持使用默认系统字符集。参数:data - 要编码的字符串charset - 所需的字符编码返回: 生成的字节数组。
Base64的文档:
输入字节:要编码的数据标志int:控制的某些功能 编码输出。传递DEFAULT会导致遵循的输出 RFC 2045.返回byte []
所以我不知道我做错了什么。如果你在解决这类问题时我会感激一些评论:)。
答案 0 :(得分:0)
不确定为什么你的例子不起作用,但下面的代码似乎对我有用:
webView.postUrl(url, urlParams.getBytes(Charset.forName("UTF-8")));