通过 kotlin 转义 html 字符串
Unescape html string via kotlin
我有一个问题,我无法通过 kotlin 取消转义转义的 html 文件。
我收到一个包含很多内容的转义 html 字符串,我需要阅读未转义的 html 格式才能在网络视图中显示它。
这是我的 html...
的截图
我可以使用此功能从我的原始文件夹中读取 .html 文件..
private fun getTermsString(): String {
Log.e("Fct", "Start Fct")
val ist: InputStreamReader
try {
Log.e("Reader", "Start reader")
//R.raw.x - x equals the html file
ist = InputStreamReader(resources.openRawResource(R.raw.api_response))
val theString = IOUtils.toString(ist)
Log.e("Reader", "Reader finished")
ist.close()
return theString
} catch (e: IOException) {
System.err.println(e.printStackTrace())
}
return "Func did not load anything."
}
fun callVM() {
try {
url = getTermsString()
var decodedHtml = unescape(url)
wv_map.loadData(Base64.encodeToString(decodedHtml.toByteArray(StandardCharsets.UTF_8), Base64.DEFAULT),
"text/html; charset=utf-8", "base64")
} catch (e: Exception) {
Log.e("FAIL", "Filedownload failed!")
e.printStackTrace()
}
}
转换我使用
fun unescape(str: String) : String
{
Log.e("decode", str)
str.replace("\s+", " ")
str.replace("\n","")
str.replace("\u003d","=")
str.replace("\u003c","<")
str.replace("\u003e",">")
str.replace("\u0027","'")
str.replace("\","\"")
str.replace("\t", " ")
return str
}
StringEscapeUtils.unescapeHtml4() 对我不起作用,这就是为什么我需要一个手动编写的函数。
有没有人遇到同样的问题并找到了解决方案?
感谢您的帮助!
您需要使用 UTF8 编码器将所有内容转换为字节数组,然后像这样再次将其转换回字符串:
val utf8byteArray = "\u003d".toByteArray(Charsets.UTF_8)
val stringData = utf8byteArray.toString(Charsets.UTF_8)
println(stringData) // prints '='
在您的情况下,只需将“\u003d
”替换为整个 html 来源即可。
感谢你们所有人,但解决方案是......嗯,我很傻 :p
我只需要将我的替换函数保存在我的变量中,例如...
fun unescape(str: String) : String
{
var strVar = str
Log.e("decode", strVar)
strVar = strVar.replace("\s+", " ")
...
这很好用。但是谢谢你的帮助! :)
我有一个问题,我无法通过 kotlin 取消转义转义的 html 文件。
我收到一个包含很多内容的转义 html 字符串,我需要阅读未转义的 html 格式才能在网络视图中显示它。
这是我的 html...
的截图我可以使用此功能从我的原始文件夹中读取 .html 文件..
private fun getTermsString(): String {
Log.e("Fct", "Start Fct")
val ist: InputStreamReader
try {
Log.e("Reader", "Start reader")
//R.raw.x - x equals the html file
ist = InputStreamReader(resources.openRawResource(R.raw.api_response))
val theString = IOUtils.toString(ist)
Log.e("Reader", "Reader finished")
ist.close()
return theString
} catch (e: IOException) {
System.err.println(e.printStackTrace())
}
return "Func did not load anything."
}
fun callVM() {
try {
url = getTermsString()
var decodedHtml = unescape(url)
wv_map.loadData(Base64.encodeToString(decodedHtml.toByteArray(StandardCharsets.UTF_8), Base64.DEFAULT),
"text/html; charset=utf-8", "base64")
} catch (e: Exception) {
Log.e("FAIL", "Filedownload failed!")
e.printStackTrace()
}
}
转换我使用
fun unescape(str: String) : String
{
Log.e("decode", str)
str.replace("\s+", " ")
str.replace("\n","")
str.replace("\u003d","=")
str.replace("\u003c","<")
str.replace("\u003e",">")
str.replace("\u0027","'")
str.replace("\","\"")
str.replace("\t", " ")
return str
}
StringEscapeUtils.unescapeHtml4() 对我不起作用,这就是为什么我需要一个手动编写的函数。
有没有人遇到同样的问题并找到了解决方案?
感谢您的帮助!
您需要使用 UTF8 编码器将所有内容转换为字节数组,然后像这样再次将其转换回字符串:
val utf8byteArray = "\u003d".toByteArray(Charsets.UTF_8)
val stringData = utf8byteArray.toString(Charsets.UTF_8)
println(stringData) // prints '='
在您的情况下,只需将“\u003d
”替换为整个 html 来源即可。
感谢你们所有人,但解决方案是......嗯,我很傻 :p
我只需要将我的替换函数保存在我的变量中,例如...
fun unescape(str: String) : String
{
var strVar = str
Log.e("decode", strVar)
strVar = strVar.replace("\s+", " ")
...
这很好用。但是谢谢你的帮助! :)