Вопросительные знаки возвращаются вместо арабских символов ТОЛЬКО при запуске серверов xampp изнутри программы - PullRequest
0 голосов
/ 11 февраля 2019

Как видно из заголовка, вопросительные знаки возвращаются только тогда, когда я запускаю mysqld.exe и httpd.exe из моей java программы.Однако, когда я запускаю xampp.exe и запускаю apache и mysql из пользовательского интерфейса, он работает отлично.Я использую фреймворк slim 3 с базой данных mysql.

Я пробовал устанавливать набор символов всеми возможными способами: настраивать конфигурации slim приложения, задавать набор символов базы данных, писать response с использованием JSON_UNESCAPED_UNICODE и т. Д..

// Slim application configuration
$config = [ 'charset' => 'utf-8' .....]

// .htacess file
AddDefaultCharset utf-8

// my.ini was already configured

// $response in php function
return $response->withHeader('Content-Type', 'application/json')->withStatus(200)->withJson($json_response, null, JSON_UNESCAPED_UNICODE);

Однако, так как проблема разрешается, когда я вручную запускаю xampp, я думаю, что, возможно, есть какой-то файл, который должен запускаться наряду с упомянутыми выше.Если нет, есть ли способ обойти это?

РЕДАКТИРОВАТЬ: я пытался вставить данные через API вместо того, чтобы вручную вставить его с помощью запроса в phpmyadmin.Эти вставленные данные были единственной верной строкой.Обратите внимание, что я вставил данные во время работы сервера из моей программы java.

1 Ответ

0 голосов
/ 11 февраля 2019

Я исправил проблему, правильно установив PDO.(Проверьте комментарии OP)

$pdo = new PDO ("mysql:host=localhost;dbname=database;charset=utf8", "user", "pass");

Причина, по которой данные, вставленные через API, были правильно извлечены, заключается в том, что они были отправлены в той же кодировке, для которой был установлен PDO.Когда я попытался восстановить его после настройки PDO, он был поврежден.

...