我有两部手机:我从中国买的lg g3和我从以色列买的lg g3
我建立了一个android应用程序,根据一个关键字搜索(关键字搜索可以在任何语言:俄语,希伯来语,阿拉伯语,英语等)从web获得响应
在英语中,两个电话都很好。
但是当我使用非英语语言时(以上都是,没有尝试中文),以色列手机仍然工作得很好,但中国手机不行。
当我在中国手机上调试程序时,我看到当我得到响应时,关键字搜索(在非英语语言中)是问号。但在以色列手机上,它工作得很好,所以我尝试了各种编码,但似乎都不起作用。
下面是出现问题的那段代码:
HttpURLConnection connection = null;
try {
//Create connection
URL url = new URL("https://www.example.com/results?search_query="+keyword);
connection = (HttpURLConnection)url.openConnection();
connection.setRequestProperty("User-Agent", "Mozilla/5.0");
connection.setRequestProperty("Accept-Charset", "UTF-8");
connection.setRequestProperty("content-type", "application/x-www-form-urlencoded; charset=utf-8");
BufferedReader in = new BufferedReader(
new InputStreamReader(connection.getInputStream(),"UTF-8"));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
response.append('r');
}
m_htmlDoc = response.toString();
} catch (Exception e) {
e.printStackTrace();
m_htmlDoc = null;
} finally {
if(connection != null) {
connection.disconnect();
}
}
问题是:我是否需要改变代码中的一些东西,以便中国电话将接受其他语言(不仅仅是英语)?如果是这样的话,如果有人能告诉我答案就太好了。如果没有,那么也许我需要更改手机的设置?两部手机都有相同的操作系统语言(希伯来语)
所以utf-8是正确的,我不需要改变手机上的任何本地语言,我所需要的是编码keysearch (URLEncoder)。编码(关键字,"utf - 8"))。
这是完整的答案:
HttpURLConnection connection = null;
try {
//Create connection
URL url = new URL("https://www.example.com/results?search_query=" + URLEncoder.encode(keyword, "UTF-8"));
connection = (HttpURLConnection)url.openConnection();
connection.setRequestProperty("User-Agent", "Mozilla/5.0");
connection.setRequestProperty("Accept-Charset", "UTF-8");
connection.setRequestProperty("content-type", "application/x-www-form-urlencoded; charset=utf-8");
BufferedReader in = new BufferedReader(
new InputStreamReader(connection.getInputStream(),"UTF-8"));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
response.append('r');
}
m_htmlDoc = response.toString();
} catch (Exception e) {
e.printStackTrace();
m_htmlDoc = null;
} finally {
if(connection != null) {
connection.disconnect();
}
}
谢谢大家的帮助。