Вызов PHP REST API из приложения для Android не отображает умлауты правильно

Я создал простой REST API в PHP, который запускает запрос к моей базе данных MySQL (полностью в кодировке utf-8) и возвращает результат в виде массива JSON. В PHP я также установил кодировку в UTF-8: mysqli_set_charset($con, "UTF8");,

Поэтому, когда я звоню в мой сервис, как http://<host>/getData.php в моем веб-браузере я получаю что-то вроде этого:

[{"id":"6","name":"föö","content":"bär"}]

что совершенно правильно.

Кроме того, я вызываю службу REST из моего приложения для Android с помощью OkHttp3. Но это всегда дает мне следующий вывод:

[{"id":"6","name":"f&ouml;&ouml;","content":"b&auml;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&ouml;&ouml;","content":"b&auml;r"}]
}
});

Можете ли вы сказать мне, что я делаю не так?

0

Решение

Ладно, я понял! Ренан Арсено напомнил мне, что моя Служба отдыха предоставляет мне объекты HTML. Так что вместо использования Html.fromHtml(result) в Java — который, очевидно, также работает — я удалил функцию PHP htmlentities() который преобразует мои символы в сущности HTML.

Теперь это работает. Благодаря вам!

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]