如何在 Kotlin 中将 win1251 编码转换为 UTF8?
How convert win1251 encoding to UTF8 inside Kotlin?
我正在向页面发出 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 库。
使用接受 Charset
的 responseString
重载使其使用 Charset.forName("Windows-1251")
:
解码响应
bashImHost.httpGet().responseString(Charset.forName("Windows-1251")) {
request, response, result ->
/* ... */
}
使用错误的编码 UTF-8 将响应编码转换为 String
后,似乎无法更改对 Windows-1251 的响应编码,请参阅 this Q&A。
我正在向页面发出 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 库。
使用接受 Charset
的 responseString
重载使其使用 Charset.forName("Windows-1251")
:
bashImHost.httpGet().responseString(Charset.forName("Windows-1251")) {
request, response, result ->
/* ... */
}
使用错误的编码 UTF-8 将响应编码转换为 String
后,似乎无法更改对 Windows-1251 的响应编码,请参阅 this Q&A。