2

我正在向页面发出 HTTP 请求。此页面有西里尔字符。如何将 CP1251 中的答案转换为 UTF8?

这是我的代码。

package bash

import com.github.kittinunf.fuel.httpGet
import com.github.kittinunf.result.Result

fun main(args: Array<String>) {
    val bashImHost = "http://bash.im/"
    bashImHost.httpGet().responseString { request, response, result ->
        when (result) {
            is Result.Failure -> {
                println("Some kind of error!")
            }
            is Result.Success -> {
                val htmlBody = result.value
                val parsePattern = "<div class=\"text\">(.+)</div>"
                val parseRegex = Regex(parsePattern)
                val results = parseRegex.findAll(htmlBody)
                results.iterator().forEach { resultItem -> println(resultItem.groups[1]?.value) }
            }
        }
    }
}

我正在使用 Fuel HTTP 库。

4

1 回答 1

5

使用responseString接受的重载Charset使其使用以下方法解码响应Charset.forName("Windows-1251")

bashImHost.httpGet().responseString(Charset.forName("Windows-1251")) {
    request, response, result ->

    /* ... */
}

似乎在String使用错误的编码 UTF-8 将响应转换为 Windows-1251 后,您无法更改响应的编码,请参阅此 Q&A

于 2017-06-13T19:10:11.977 回答