2017-06-13 70 views
1

我正在向页面发出HTTP请求。此页面有西里尔文字符。我如何将CP1251中的答案转换为UTF8?如何将K12中的win1251编码转换为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库。

回答

2

使用responseString重载接受Charset,使其使用Charset.forName("Windows-1251")解码响应:

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

    /* ... */ 
} 

好像你不能改变响应到Windows-1251的编码已通过转换为String后错误的编码UTF-8,见this Q&A

+0

谢谢你的人! – Jakeroid

+0

如果responseJson呢? –