Проблема с PHP MySQL и вставка в UTF-8

У меня проблема с php и mysql, вставьте в базу данных с помощью utf-8. первый файл: addsite:

<?php include 'header.php'; if(isset($data)) { foreach($_POST as $key => $value) { $posts[$key] = filter($value); } if(isset($posts['type'])){ if($posts['url'] == "http://" || $posts['url'] == ""){ $error = "Add your page link!"; }else if($posts['title'] == ""){ $error = "Add your page title!"; }else if(!preg_match("/\bhttp\b/i", $posts['url'])){ $error = "URL must contain http://"; }else if(!preg_match('|^http(s)?://[a-z0-9-]+(.[a-z0-9-]+)*(:[0-9]+)?(/.*)?$|i', $posts['url'])){ $error = "Please do not use special characters in the url.<"; }else{ include "plugins/" . $posts['type'] . "/addsite.php"; } } ?> <div class="contentbox"> <font size="2"> <li>Pick the type of exchange you are promoting from the dropdown menu.</li> <li>Set the amount of coins you wish to give per user complete(CPC).</li> <li>The higher the amount of coins the higher the Links position.</li> </div> <div class="contentbox"> <div class="head">Add Site</div> <div class="contentinside"> <?php if(isset($error)) { ?> <div class="error">ERROR: <?php echo $error; ?></div> <?php } if(isset($success)) { ?> <div class="success">SUCCESS: <?php echo $success; ?></div> <?php } if(isset($warning)) { ?> <div class="warning">WARNING: <?php echo $warning; ?></div> <?php } ?> <form class="contentform" method="post"> Type<br/> <select name="type"><?php $select = hook_filter('add_site_select', ""); echo $select; ?></select><br/><br/> Link<br/> <input name="url" type="text" value="<?php if(isset($posts["url"])) { echo $posts["url"]; } ?>"/><br/><br/> Title<br/> <input name="title" type="text" value="<?php if(isset($posts["title"])) { echo $posts["title"]; } ?>"/><br/><br/> Cost Per Click<br/> <?php if($data->premium > 0) { ?> <select name="cpc"><?php for($x = 2; $x <= $site->premcpc; $x++) { if(isset($posts["cpc"]) && $posts["cpc"] == $x) { echo "<option selected>$x</option>"; } else { echo "<option>$x</option>"; } } ?></select><br/><br/> <?php }else{ ?> <select name="cpc"><?php for($x = 2; $x <= $site->cpc; $x++) { if(isset($posts["cpc"]) && $posts["cpc"] == $x) { echo "<option selected>$x</option>"; } else { echo "<option>$x</option>"; } } ?></select><br/><br/> <?php } ?> <input style="width:40%;" type="Submit"/> </form> </div> </div> <?php } else { echo "Please login to view this page!"; } include 'footer.php'; ?> 

второй файл, плагин addsite.php

 <?php $num1 = mysql_query("SELECT * FROM `facebook` WHERE `url`='{$posts['url']}'"); $num = mysql_num_rows($num1); if($num > 0){ $error = "Page already added!"; }else if(!strstr($posts['url'], 'facebook.com')) { $error = "Incorrect URL! You must include 'facebook.com'"; }else{ mysql_query($qry); mysql_query("INSERT INTO `facebook` (user, url, title, cpc) VALUES('{$data->id}', '{$posts['url']}', '{$posts['title']}', '{$posts['cpc']}') "); $success = "Page added successfully!"; } ?> 

когда я пишу арабский язык в форме и представляю, он попал в базу данных с нечетким языком, например:

Oslash; £ سÙ

У меня были подобные проблемы с греческими персонажами. Возможно, они выглядят незнакомыми в базе данных, но они были правильными.

Попробуйте прочитать значения в PHP и сделать эхо. Он покажет, правильно ли он был сохранен.

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

Для MySQL, если у вас уже создана база данных, сделайте следующее:

 ALTER DATABASE database_name CHARACTER SET utf8 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT COLLATE utf8_general_ci; 

Для таблицы измените это следующим образом:

 ALTER TABLE table_name DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; 

Затем отправьте соответствующий тип контента с вашим документом. Используйте этот HTML-тег:

 <meta http-equiv="Content-type" value="text/html; charset=UTF-8" /> 

Попробуйте следующее:

  1. Добавить метатег UTF-8: <meta http-equiv="Content-type" value="text/html; charset=UTF-8" />
  2. Добавить заголовок UTF-8: header('Content-Type: text/html; charset=utf-8'); в случае, если тег будет проигнорирован с отсутствием надлежащей разметки
  3. Убедитесь, что ваш скрипт закодирован в UTF-8 (для этого используйте Notepad ++)
  4. Запуск запроса set names 'utf8' перед вставкой