Unicode строка php - PullRequest
       2

Unicode строка php

2 голосов
/ 06 сентября 2010

У меня есть вопрос!Я хочу напечатать строку юникода в php (например, «سلام»)!но когда я использую эхо только некоторые ???apear !!!

что мне делать ???Это происходит тогда, когда я хочу чо строку, полученную из базы данных!

echo 'سلام';

результат:

????

Я пытался использовать функцию заголовка, но это мне не помогло!

Ответы [ 3 ]

6 голосов
/ 06 сентября 2010

Вам нужно сделать три вещи:

  1. Убедитесь, что вы получаете данные в виде данных UTF-8.Для MySQL запросите SET NAMES 'utf8' перед выбором записей.
  2. Убедитесь, что вы используете совместимые с UTF-8 функции при работе со строками UTF-8.
  3. Убедитесь, что вы устанавливаете выходкодировка как UTF-8.Для HTML это можно сделать, установив для заголовка HTTP Content-type значение (например, text/html; charset=utf-8.

). Конечно, замените «UTF-8» на любую кодировку, которую вы хотите, которая поддерживает символытебе нужно.Нет необходимости изменять таблицы базы данных (кроме возможного повышения производительности).Вам может потребоваться изменить шаблоны HTML и т. Д., Если вы решите использовать UTF-16 или что-то еще, что (в основном) не совместимо с ASCII.

2 голосов
/ 06 сентября 2010

Вам необходимо объявить используемую кодировку символов в ответе HTTP.Вы можете использовать функцию header :

header('Content-Type: text/html;charset=utf-8');

. При этом вывод объявляется как HTML с кодировкой символов UTF-8.Обратите внимание, что вы не можете использовать header, когда вы уже отправили данные клиенту без их буферизации.Так что либо используйте выходной элемент управления для буферизации вывода, чтобы вы могли изменить заголовок, хотя уже был какой-то вывод, либо используйте header перед любым выводом.

0 голосов
/ 02 июня 2013

Может быть, я немного опоздал, но у меня это сработало:

echo utf8_encode('سلام');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...