UTF-8在java中编码,从网站检索数据

0 java encoding character-encoding

我正在尝试从网站获取以UTF-8编码的数据并将其插入数据库(MYSQL).数据库也以UTF-8编码.

这是我用来从特定站点下载数据的方法.

public String download(String url) throws java.io.IOException {
        java.io.InputStream s = null;
        java.io.InputStreamReader r = null;
        StringBuilder content = new StringBuilder();
        try {
            s = (java.io.InputStream)new URL(url).getContent();

            r = new java.io.InputStreamReader(s, "UTF-8");

            char[] buffer = new char[4*1024];
            int n = 0;
            while (n >= 0) {
                n = r.read(buffer, 0, buffer.length);
                if (n > 0) {
                    content.append(buffer, 0, n);
                }
            }
        }
        finally {
            if (r != null) r.close();
            if (s != null) s.close(); 
        }
        return content.toString();
    }
Run Code Online (Sandbox Code Playgroud)

如果编码设置为"UTF-8"(R =新java.io.InputStreamReader中(S,"UTF-8");)的数据插入到数据库中,似乎看行,但是当我尝试以显示它,我越来越像这样的东西:科特迪瓦,而不是科特迪瓦.

我的所有网站都以UTF-8编码.

请帮忙.

如果编码设置为"窗口1252"(R =新java.io.InputStreamReader中(S,"窗口1252");)一切工作正常,我在我的网站越来越科特迪瓦(),但在Java这个标题看起来像'C?'te d'Ivoire'什么打破其他东西,例如链接.这是什么意思 ?

Tom*_*mas 6

我会考虑使用commons-io,他们有一个功能做你想做的事:链接

那就是用这个替换你的代码:

public String download(String url) throws java.io.IOException {
    java.io.InputStream s = null;
    String content = null;
    try {
        s = (java.io.InputStream)new URL(url).getContent();
        content = IOUtils.toString(s, "UTF-8")

    }
    finally {
        if (s != null) s.close(); 
    }
    return content.toString();
}
Run Code Online (Sandbox Code Playgroud)

如果没有开始研究是否可以正确存储它以消除数据库未正确设置的可能性.