json_encode не будет кодировать французские символы

Я пытаюсь работать с французскими персонажами. По какой-то причине PHP не будет выводить их правильно, если я не заставляю набор символов ISO-8859-1 (чего я действительно не хочу делать); он не позволит мне использовать UTF-8.

Поэтому, делая print_r() моего массива, когда я заставляю ISO-8859-1, вы получаете следующее:

 Array ( [0] => stdClass Object ( [language] => fr [langselect] => î [s1next] => Prochain [hascodespan] => Avez-vous déjà un code d'enregistrement? [s2prev] => Précédent [s2next] => Oui, j'ai déjà un code. [ecodedescription] => Un E-Code vous donne un accès exclusif à des événements vraiment cool. Si vous êtes dans le besoin d'un code, vous pouvez en acheter un dans notre boutique en ligne en visitant ce lien <a href="#"> boutique en ligne</ a>. [purchase] => Cliquez ici pour acheter en ligne billets [ecodespan] => S'il vous plaît entrer votre e-code [ecodelocdescription] => Votre code peut être trouvé ci-dessous le code à barres sur votre billet [s3prev] => Précédent [s3next] => Prochain [validationtext] => Validation E-Code ... Un instant. ) ) 

При использовании UTF-8 вывод выглядит следующим образом:

 Array ( [0] => stdClass Object ( [language] => fr [langselect] =>   [s1next] => Prochain [hascodespan] => Avez-vous d j  un code d'enregistrement? [s2prev] => Pr c dent [s2next] => Oui, j'ai d j  un code. [ecodedescription] => Un E-Code vous donne un acc s exclusif   des  v nements vraiment cool. Si vous  tes dans le besoin d'un code, vous pouvez en acheter un dans notre boutique en ligne en visitant ce lien <a href="#"> boutique en ligne</ a>. [purchase] => Cliquez ici pour acheter en ligne billets [ecodespan] => S'il vous pla t entrer votre e-code [ecodelocdescription] => Votre code peut  tre trouv  ci-dessous le code   barres sur votre billet [s3prev] => Pr c dent [s3next] => Prochain [validationtext] => Validation E-Code ... Un instant. ) ) 

В обоих случаях выполнение json_encode() дает следующий результат:

 [ { language: "fr", langselect: null, s1next: "Prochain", hascodespan: null, s2prev: null, s2next: null, ecodedescription: null, purchase: "Cliquez ici pour acheter en ligne billets", ecodespan: null, ecodelocdescription: null, s3prev: null, s3next: "Prochain", validationtext: "Validation E-Code ... Un instant." } ] 

У меня есть база данных, настроенная на UTF-8, но по какой-то нечетной причине каждый раз, когда я вставляю что-либо с французскими символами, она возвращается к некоторым западноевропейским кодировкам.

В основном, мне действительно нужен json_encode() чтобы возвращать действительные результаты, чтобы я мог использовать его в моих переводах. Я пробовал iconv() и utf8_encode() , но безрезультатно.

Любая помощь будет принята с благодарностью.

Пожалуйста, помимо кодировки базы данных, убедитесь, что вы проверяете следующее:

  • utf8-кодирование ФАЙЛОВ (js / php)
  • utf8 html content: <meta HTTP-EQUIV="content-type" CONTENT="text/html; charset=utf-8">
  • utf8 вашего соединения db: SET character_set_connection = 'utf8'
  • utf8 из ваших таблиц mysql: ALTER TABLE table CONVERT TO CHARACTER SET utf8;
  • utf8 результатов вашего запроса: SET character_set_results = 'utf8'
  • utf8 вашего клиента db: SET character_set_client = 'utf8'
  • utf8 вашего сервера db: SET character_set_database = 'utf8' и SET character_set_server = 'utf8'
  • в некоторых случаях принудительное использование utf8 в файле необходимо, когда требуемые кодированные значения требуют кодирования. Вам нужно будет добавить комментарий поверх вашего файла php / js / xml, например, с charset=utf-8 , поэтому ультра-редактирование или ваш любимый редактор могут его обнаружить.

Rgds.

основной; имеет ли ваш .php-файл строку сверху?

Заголовок ( "Content-Type: Текст / HTML, кодировка UTF8 = \ п");

Мне удалось это понять. Это не то решение, которое я хотел, но оно работает. Мне пришлось настроить свой запрос, чтобы он выглядел так:

 CONVERT(CAST(langselect as BINARY) USING latin1) as langselect 

Попытайтесь работать с источниками непосредственно в utf8.

Я столкнулся с той же проблемой и использовал это простое решение: когда вы создаете новый исходный файл PHP или Javascript, убедитесь, что он закодирован в utf8. Я использую Ultra Edit и выбираю вариант «UTF8 no bom». Этот простой шаг разрешил все мои проблемы с символами кодирования.

Все современные браузеры поддерживают utf8, поэтому с этим кодируйте свои веб-страницы. Для совместимости это проще, если все ваши исходные файлы также находятся в utf8.

Это следует веб-стандартам.

Я столкнулся с той же проблемой, но я бы предложил:

 $array = htmlentities($array); $json = json_encode($array);