2012-05-19 2 views
2

Я хочу, чтобы вставить арабские символы в базу данных с помощью ПДО с PHP, но я получил эти символы в базе данныхбазы данных PDO для арабских символов

الجامع &#1575 

и когда я использую

<META http-equiv="Content-Type" content="text/html; charset=UTF-8"> 

результат был

?????????? 

Я делаю сборник столбцов в phpMyadmin

utf8mb4_unicode_ci 

и это

utf_unicode_ci 

, но я до сих пор ту же ошибку.

И я пытался сделать соединение, как это: (Тотти, Тотти не мой действительно имя пользователя и пароль)

parent::__construct('mysql:host=localhost;dbname=ams-competation;charset=utf8"', 'totti', 'totti'); 

, но до сих пор я получаю ту же ошибку

И я также пытался как это:

parent::__construct('mysql:host=localhost;dbname=ams-competation;charset=utf8', 'totti', 'totti' 
       ,array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8")); 

и не работает :(

и после отправки формы и перед вставкой в ​​базу данных я вторю значения и я получил арабские цифры, это означает, что мои проблемы в базе данных, но эхо работ только без использования меты

и когда я попытался вставить арабскими персонажи из PHPMyAdmin IT WORKS

я использую

phpmyadmin in XAMPP 1.7.4 
php 5.5.3 

наконец я нашел решение, и это:

  1. сделать коллекцию столбцов utf8_unicode_ci
  2. положить <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> в заголовке
+0

Попробуйте utf8_general_ci на ряд –

+0

@ eric.itzhak я попытался это и все та же ошибка –

+0

Изменение сопоставление не принесет ничего полезного, потому что, как сказал Майкл Боргвальдт, это не проблема. Данные уже поступают в вашу базу данных в этом формате с PHP. Вы печатаете эти символы в каком-то богатом текстовом редакторе (например, CKEditor)? Те, кто хочет преобразовать простые символы в объекты вроде этого. – DCoder

ответ

3

Попробуйте установить соединение с utf-8 при подключении к базе данных.

  • Если вы следуете правилам и лучшие практики:

Набор констант первой в файле конфигурации, как это:

define('DB_SERVER', 'your_hostname'); 
define('DB_USERNAME', 'your_username'); 
define('DB_PASSWORD', 'your_password'); 
define('DB_CHARSET', 'UTF-8'); 
define('DB_DATABASE', 'your_dbname'); 
define('PDO_DSN', 'mysql:host=' . DB_SERVER . ';dbname=' . DB_DATABASE . ';charset=' . DB_CHARSET); 

Затем установите соединение, как это:

$_dbhandler = new PDO(PDO_DSN, DB_USERNAME, DB_PASSWORD,array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES UTF8")); 
  • Quick и грязный

Установите соединение вроде этого:

$dbhandler = new PDO('mysql:host=your_hostname;dbname=your_dbname;charset=UTF-8', $user, $pass); 
2

Ваша проблема, скорее всего, не в том, как получить доступ к базе данных. Символы, которые вы видите, кодируются в HTML, поэтому похоже, что вы используете что-то вроде htmlentities() для своих данных, прежде чем записывать его в БД.

+0

no Я никогда не использовал это утверждение, и я никогда не слышал об этом :) –

0

define('DB_CHARSET', 'UTF-8'); не работает

define('DB_CHARSET', 'UTF8'); использовать вместо

+0

Вы должны объяснить, почему это сработает. –

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