我正在尝试从HTML页面获取一些文本,我可以正确下载,但西班牙语(á,é,í,ó,ú)和其他特殊字符(ü)的重音显示为正方形一个 ?在里面标记。
一旦我使用的InputStreamReader调用了read函数,文本就会像这样出现,但是HTML页面和存储内容的数据库都很好。
无论如何要为InputStreamReader指定它应该期待什么字符编码?我最初在数据库中使用utf8_general_ci,然后将其显示到获取文本的php页面中。
感谢。
private String DownloadText (String URL)
{
int BUFFER_SIZE = 2000;
InputStream in = null;
try
{
in = OpenHttpConnection(URL);
}
catch (IOException e)
{
return "";
}
InputStreamReader isr = new InputStreamReader(in);
int charRead;
String str = "";
char[] inputBuffer = new char[BUFFER_SIZE];
try
{
charRead = isr.read(inputBuffer);
str = String.copyValueOf(inputBuffer,0,charRead);
inputBuffer = null;
in.close();
}
catch(IOException e)
{
return "";
}
return str;
}
答案 0 :(得分:1)
尝试添加此标题
header('Content-Type: text/html; charset=utf-8' );
然后像这样连接到你的数据库
// Connect to server and select database.
$login = mysql_connect("www.yoursite.com","username","password")
or die (mysql_error());
mysql_select_db("yourDatabase", $login);
添加这两行
mysql_query("SET NAMES 'utf8'");
mysql_query('SET CHARACTER SET utf8');
答案 1 :(得分:0)
试试这个:
BufferedReader br = new BufferedReader(new InputStreamReader(in, "UTF-8"), BUFFER_SIZE);
String str;
try
{
while ((str = br.readLine()) != null) {
file += str;
}
}
catch(IOException e)
{
return "";
}