2009-12-18 23 views
1

Мне нужно сохранить это в базе данных (mysql) и показать его обратно. (Моя база данных utf_general_ci)Проблема кодирования символов

I αй iиvisibłє łiкє αая --- I αй iмρøяŧαиŧ & alpha; S & alpha; S øxygєи --- I αм łiviиg iи ŧЋє wøяłd øƒ dяєαмz МГ Я αй αłwαys ŧЋєяє к Ћєłρ øŧЋєяz --- Я αй занято, но иєvая igиøяє αиy øиє I αм ŧЋє øиє wЋø cαяєz --- Я łøvє к sєє øŧЋей łαugЋiиg I αм ŧЋє øиє wЋø bøяяøw øŧЋєяz søяяøw I αм ŧЋє øиє wЋøz иαugЋŧy būt иicє I αм Проиграл й ŧЋøugЋŧs МГ --- I łøvє ŧø ŧαłk --- Я łøvє к sЋαяє --- Я αм яєαdy чтобы Пойти αиy wЋєяє --- Я łøvє к ƒły būt døи'ŧ Ћαvє wiиgs- I wαиŧ ToO ŧøucЋ ŧЋє sкy łiмiŧs --- I αм єvił būt иøŧ dєvił- - я иєvая ƒøłłøw αиy ŧяєиd --- Я αй ƒuиłøviиg --- suй ŧiмє łøvє Bе αłøиє к --- Я łøvє к łivє ---

Однако, когда данные сохраняются и восстанавливаются, это то, что я получаю

à ¢ ��à ¢ � ¥ à  ± LL à ÂÂÂ Ã ï ¿½Ã�Ã�Ã�à Ä £ à ¢ � ¥ à ¢ �� à ¢ �ï & iqu

Любая помощь, пожалуйста? Это что-то изменить сортировку базы данных или некоторые функции PHP, которые могут справиться с этим?

+1

Дубликат http://stackoverflow.com/questions/1920777/character-encoding-problem –

+0

попробовал все в ответах ниже. Все работает хорошо с phpmyadmin, но не работает с моего сайта :(Какая может быть причина? –

ответ

9

Вам необходимо использовать «SET NAMES utf8», чтобы гарантировать, что ваш сервер отправит результаты с использованием набора символов UTF-8. Пример:

$dbconn = mysql_connect("localhost", "user", "pass") or die(mysql_error()); 
      mysql_select_db('database', $dbconn) or die(mysql_error()); 
      mysql_query("SET NAMES 'utf8'"); 
+0

это действительно сработало! –

+0

, но когда я INSERT такое же значение все гаснет, и это отображается Æ –

+0

Можете ли вы опубликовать свой оператор INSERT? – BenTheDesigner

5

Я должен указать вам статью Джоэла под названием The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!). В этой статье объясняется, что такое кодировки символов, почему они используются и как управлять ими.

Ваши данные, очевидно, содержат много символов Юникода из широкого диапазона, поэтому вам нужно будет узнать, как PHP и MySql обрабатывают кодировки символов (в вашей конфигурации) и какие функции вызывать, чтобы убедиться, что кодировки правильно переведены в правильное время. Образцы (некорректные) данных, которые вы вставили, указывают на то, что где-то есть некорректное кодирование.

1

Убедитесь, что MySQL mysql_query("SET NAMES 'utf8'"); выполняется для передачи данных, а затем и убедитесь, что каждый из ваших страниц посылает заголовок UTF-8.

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

Кроме того, читайте Am I correctly Supporting UTF-8 перепроверить все все и запустить некоторые other test data через него, чтобы убедиться, что он работает. И вы can test for UTF-8 на каждой загрузке страницы.

Последнее, убедитесь, что в браузере установлена ​​кодировка, которую вы хотите использовать, поскольку некоторые из новых, таких как Chrome, не используют автоматически некоторые кодировки. Тем не менее, все они используют UTF-8, поэтому убедитесь, что вы отправляете этот заголовок!

1

Чтобы использовать специальные символы без проблем, кодирующих старается следовать этим 4 правил:

  1. создание полей на БДЕ с utf8_general_ci комплектовкой
  2. сделать mysql_query запроса ("SET 'utf8' NAMES;"); после любого соединения (вам нужно MySQL 5)
  3. поставить мета кодировка utf8 тег в HTML головки блока
  4. чтения и записи строк в БД и HTML без использования utf8_encode или другие функции

Этот текст here.

4

Попробуйте следующие шаги:

  1. Убедитесь, что все поля БД создаются для хранения данных в кодировке UTF-8 (utf8_general_ci).
  2. После подключения к БД выполнить следующий запрос: SET NAMES 'utf8';
  3. Сохранить .php файл как UTF-8 без BOM, there is a nice free text editor for Windows, что позволит вам легко изменить (в строке состояния) кодировку файла , просто выберите UTF-8 Обычная.

Это должно сработать, однако, если вы получаете данные от пользователя (через аргументы GET, POST или COOKIE), вы можете захотеть следовать за additional steps described in this answer.

Кроме того, относительно следующего мета-тега:

<meta http-equiv="content-type" content="text/html; charset=utf-8" /> 

или эквивалентного PHP заголовка:

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

Вам нужны всего лишь те, дисплея UTF-8 данные, это не мешает с процессом хранения, хотя, конечно, это не помешает использовать его. =)

Смежные вопросы