2017-02-22 4 views
1

В моей базе данных есть много таких специальных символов, как (Стамбул, Ешилькёй, Ататюрк и др.).Обработка специальных символов в json_encode

, когда я напрямую извлекаю эти данные из базы данных, все работают нормально. Значения данных остаются оригинальными, но возникает проблема при преобразовании этих данных в JSON с использованием json_encode().

После кодирования все эти данные преобразуются в какие-то странные символы, такие как ? Стамбуле, Bak? Rköy ...

Но после того, как decodeing (с использованием json_decode) Мне нужна исходная строка, которая была перед кодированием (json_encode).

Я пробовал множество решений, предоставляемых в Интернете, чтобы решить проблему, но ни один из них не работает в моем случае.

некоторые решения я tried-

Если не удается получить исходную строку по крайней мере там не должно быть? (удалите эти вещи).

Предложите мне что-то решить.

+0

// set charset в вашем запросе mysql ** mysqli_query ($ conn, "SET CHARSET utf8") ** – Sharif

+0

Я устанавливаю заголовок заголовка ('Content-Type: application/json charset = utf-8'). ; и мои данные в порядке после получения из базы данных, но после кодировки –

ответ

0

Эта библиотека спас мою жизнь (https://github.com/neitanod/forceutf8).

Раньше я использовал неправильный метод, чтобы решить проблему. toUTF8() функция был жизнь заставка.

2

С PHP 5.4 вы можете использовать это:

json_encode($text, JSON_UNESCAPED_UNICODE); 
2

Использование mysqli_set_charset (соединение, набор символов); до mysqli_query();

Пример:

mysqli_set_charset($CONNECTION, "utf8"); 

$result_query = mysqli_query($CONNECTION, $query);