Что не так, когда я пытаюсь опубликовать String со скандинавскими символами с Android на Php, например, ÅÄÖ

Я не могу найти причину, почему мои скандинавские символы, переданные в php, не отображаются и сохраняются правильно.

Когда я использую свое веб-приложение, скандинавские символы корректно работают с php и базой данных.

Если я пишу сообщение в базу данных из веб-приложения и загружаю его в приложение для Android, символы приходят правильно.

В андроид

String message = "Tässä"
try {

// open a connection to the site
URL url = new URL("own_url");
HttpURLConnection con = (HttpURLConnection)url.openConnection();


con.setRequestMethod("POST");
con.setRequestProperty("User-Agent", "");
con.setRequestProperty("Accept-Language", "fi, en-US,fi;q=0.6, en;q=0.5");
con.setRequestProperty("Accept-Charset", "UTF-8");

// Send post request
con.setDoOutput(true);

String urlParameters = "message=" + message;

В PHP

$message = $_POST['message'];
error_log($message);

error_log показывает это как T \ xe4ss \ xe4

mysqli_set_charset($con, 'utf8');
date_default_timezone_set('UTC');

$sql = "INSERT INTO messages SET message='$message'";
mysqli_query($con, $sql);

В базе данных это Т? Сс

РЕДАКТИРОВАТЬ

Изменено создание запросов для предотвращения SQL-инъекций, благодаря предложению user2864740.

$stmt = $con->prepare("INSERT INTO messages (message) VALUES (?)");
$stmt->bind_param("s", $message);
$stmt->execute();

1

Решение

Я нашел решение для моей проблемы, мне нужно было urlParameters, чтобы быть байтом [], как это.

String urlParameters = "message=" + message;
byte[] postData = urlParameters.getBytes(StandardCharsets.UTF_8);

DataOutputStream wr = new DataOutputStream( con.getOutputStream()){};
wr.write( postData );

Но есть проблема с API ниже 19, с этим:

StandardCharsets.UTF_8

Поле требует уровня API 19 (текущий минимум 14): java.nio.charset.StandardCharsets # UTF_8

0

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

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

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