从Android应用程序调用PHP REST API不会';t正确显示umlauts(ä;ü;ö;)
我用PHP构建了一个简单的RESTAPI,它向我的MySQL数据库(完全utf-8编码)发出一个查询,并将结果作为JSON数组返回。在PHP中,我还将字符集设置为UTF-8:从Android应用程序调用PHP REST API不会';t正确显示umlauts(ä;ü;ö;),php,android,mysql,okhttp,okhttp3,Php,Android,Mysql,Okhttp,Okhttp3,我用PHP构建了一个简单的RESTAPI,它向我的MySQL数据库(完全utf-8编码)发出一个查询,并将结果作为JSON数组返回。在PHP中,我还将字符集设置为UTF-8:mysqli_set_字符集($con,“UTF8”) 所以当我调用我的服务时,比如http:///getData.php在我的web浏览器中,我得到如下信息: [{"id":"6","name":"föö","content":"bär"}] 这是完全正确的 此外,我正在使用OkHttp3从Android应用程序中调用R
mysqli_set_字符集($con,“UTF8”)代码>
所以当我调用我的服务时,比如http:///getData.php
在我的web浏览器中,我得到如下信息:
[{"id":"6","name":"föö","content":"bär"}]
这是完全正确的
此外,我正在使用OkHttp3从Android应用程序中调用REST服务。但这总是给我以下输出:
[{"id":"6","name":"föö","content":"bär"}]
很明显,字符集或类似的东西有问题
这是我的JAVA代码:
OkHttpClient client = new OkHttpClient();
HttpUrl.Builder urlBuilder = HttpUrl.parse(config.getServerRoot() + php).newBuilder();
String url = urlBuilder.build().toString();
Request request = new Request.Builder()
.url(url)
.build();
// Get a handler that can be used to post to the main thread
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
e.printStackTrace();
}
@Override
public void onResponse(Call call, final Response response) throws IOException {
// Check for failure
if (!response.isSuccessful()) {
throw new IOException("Unexpected code " + response);
}
// Read data on the worker thread
final String result = response.body().string();
// result = [{"id":"6","name":"föö","content":"bär"}]
}
});
你能告诉我我做错了什么吗?好的,我知道了!Renan Arceno提醒我,我的Rest服务正在为我提供HTML实体。因此,我没有在Java中使用Html.fromHtml(result)
,这显然也很有效,而是删除了PHP函数htmlentities()
,该函数将字符转换为Html实体
现在它起作用了。谢谢你 ö
是umlautä
阅读uml
或umlaut
或ä
是的,我知道那为什么要说显然有什么问题
?你可以通过这样做来解决:Html.fromHtml(结果)