Android 如何将Shift JIS编码字符串转换为UTF-8?

Android 如何将Shift JIS编码字符串转换为UTF-8?,android,encoding,utf-8,sqlite,shift-jis,Android,Encoding,Utf 8,Sqlite,Shift Jis,我从中获取html源代码。Html文件是Shift JIS编码的。我正在努力获得书名和作者。然后我想将标题和作者记录到SQLite(UTF-8)数据库中 String[] splittedResult = result.split("\"title\">"); splittedResult = splittedResult[1].split("</h1>"); String title = splittedResult[0

我从中获取html源代码。Html文件是Shift JIS编码的。我正在努力获得书名和作者。然后我想将标题和作者记录到SQLite(UTF-8)数据库中

    String[] splittedResult = result.split("\"title\">");
            splittedResult = splittedResult[1].split("</h1>");
            String title = splittedResult[0];
            byte[] b = null;
            try {
                b = title.getBytes("Shift_JIS");
            } catch (UnsupportedEncodingException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }
            String value=null;
            try {
                value = new String(b, "UTF-8");
            } catch (UnsupportedEncodingException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }

...
myDatabase.addBookInformation(value, author);
String[]splittedResult=result.split(“\”title\“>”);
splittedResult=splittedResult[1]。拆分(“”);
字符串标题=拆分结果[0];
字节[]b=null;
试一试{
b=title.getBytes(“Shift_JIS”);
}捕获(不支持DencodingException e1){
//TODO自动生成的捕捉块
e1.printStackTrace();
}
字符串值=null;
试一试{
值=新字符串(b,“UTF-8”);
}捕获(不支持DencodingException e1){
//TODO自动生成的捕捉块
e1.printStackTrace();
}
...
myDatabase.addBookInformation(值、作者);
结果是这样的:拉丁字母显示正常。但是日语字母在里面用问号块表示(请不要注意空值)


如何解决这个问题?

正如@Codo所指出的,这个问题的解决方案是以前的。 我改变了这个

s = EntityUtils.toString(response.getEntity(), "UTF-8");
对此

s = EntityUtils.toString(response.getEntity(), "Shift_JIS");
现在不需要编码了

String[] splittedResult = result.split("\"title\">");
        splittedResult = splittedResult[1].split("</h1>");
        String title = splittedResult[0];
        /** I HAVE TAKEN THIS PART OF MY CODE
        byte[] b = null;
        try {
            b = title.getBytes("Shift_JIS");
        } catch (UnsupportedEncodingException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
        String value=null;
        try {
            value = new String(b, "UTF-8");
        } catch (UnsupportedEncodingException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
        **/
String[]splittedResult=result.split(“\”title\“>”);
splittedResult=splittedResult[1]。拆分(“”);
字符串标题=拆分结果[0];
/**我已经把这部分代码
字节[]b=null;
试一试{
b=title.getBytes(“Shift_JIS”);
}捕获(不支持DencodingException e1){
//TODO自动生成的捕捉块
e1.printStackTrace();
}
字符串值=null;
试一试{
值=新字符串(b,“UTF-8”);
}捕获(不支持DencodingException e1){
//TODO自动生成的捕捉块
e1.printStackTrace();
}
**/

Java字节数组可以包含具有特定编码的字符串。Java字符串不能:它基本上是一个不涉及任何编码的字符数组。代码以字符串变量(名为
result
)开头。因此,从带有特定编码的HTML页面到不带编码的字符数组的转换已经发生。使用调试器检查
结果
标题
是否包含正确的日文字符。如果不是,则问题出现在问题中显示的代码之前。如果可以的话,我不明白你的问题。