我想從UTF-8編碼的網站獲取數據並將它們插入到數據庫(MYSQL)中。數據庫也以UTF-8編碼。在java中的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();
}
如果編碼設置爲 'UTF-8'(R =新java.io.InputStreamReader中(S, 「UTF-8」);)插入到數據庫中的數據似乎看上去正常,但是當我嘗試展示它,我得到了這樣的東西:科特迪瓦,而不是科特迪瓦。
我的所有網站都以UTF-8編碼。
請幫助。如果編碼設置爲「windows-1252」(r = new java.io.InputStreamReader(s,「windows-1252」);),一切正常,我在我的網站()上獲得科特迪瓦(Côted'Ivoire) ,但在java中,這個標題看起來像'C''科特迪瓦'什麼打破了其他的東西,比如鏈接。這是什麼意思 ?
字符集客戶端:utf8;字符集連接:utf8;字符集數據庫:latin1;字符集文件系統:二進制;字符集結果:utf8;字符集服務器:latin1;字符集系統:utf8; – Martin 2010-01-05 10:33:46
那麼,你有它。您的服務器存儲的數據爲「latin1的」(除非您在創建表時專門設置「utf-8」。你需要設置服務器的字符集「(它實際上是一個字符編碼,但我們不要進入現在)爲utf8作爲好。 – Confusion 2010-01-05 11:24:54