通过 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+", " ")
...

这很好用。但是谢谢你的帮助! :)