作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在做一个项目,我需要从我的应用引擎服务器获取一些包含希伯来字符的数据(数据以 json 格式发送)。
在服务器端:
resp.setHeader("Content-Type", "application/json; charset=UTF-8");
PrintWriter out = resp.getWriter();
out.print(responeData.toString());
当我调试服务器时,我发现响应数据似乎正常(意思是,它显示了我的希伯来语字符。
在客户端(安卓):
执行此代码后,我得到的结果数据是 ???而是希伯来字符。我尝试了所有不同的编码,例如“windows-1255”、“iso-8859-8”有谁知道问题出在哪里?谢谢!
// Create new default http client
HttpClient client = new DefaultHttpClient();
HttpConnectionParams.setConnectionTimeout(client.getParams(), 10000); // Timeout Limit
HttpConnectionParams.setSoTimeout(client.getParams(), 10000);
HttpResponse response;
HttpPost post = new HttpPost(serviceURL);
try {
StringEntity se = new StringEntity(requestPayload.toString());
post.addHeader(CustomHeader.TASK_NAME.getHeaderName(), taskName);
se.setContentType(new BasicHeader(HTTP.CONTENT_TYPE, "application/json"));
post.setEntity(se);
// Execute the request
response = client.execute(post);
// Get the response status code
StatusLine statusLine = response.getStatusLine();
int statusCode = statusLine.getStatusCode();
if (statusCode == 200) { // Ok
if (response != null) { // Checking response
InputStream in = response.getEntity().getContent(); // Get the data in the entity
retreturnVal = HttpCaller.readContentFromIS(in);
}
}
} catch (Exception e) {
Log.e("Error in connectivity layer, stacktrace: ", e.toString());
return null;
}
public static String readContentFromIS(InputStream in) throws IOException {
BufferedReader reader = new BufferedReader(
new InputStreamReader(in, "UTF-8"), 8);
StringBuffer sb = new StringBuffer();
String line = "";
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
return sb.toString();
}
最佳答案
假设您在服务器上使用 ServletResponse
,而不是调用
resp.setHeader("Content-Type", "application/json; charset=UTF-8");
你应该打电话
resp.setContentType("application/json; charset=UTF-8");
这应该具有将 getWriter()
调用中使用的编码更改为 UTF-8 的效果。我认为调用 setHeader
不会产生相同的副作用。
关于android - 从 Android 上的 json 中的 http 响应获取希伯来语字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12003979/
我是一名优秀的程序员,十分优秀!