2016-08-30 2 views
0

Я использую codeigniter.
После выполнения следующего запроса:не может отображать специальные символы, полученные из AES_DECRYPT

$names = this->db->query("SELECT AES_DECRYPT(nombre,'".$key."') AS nombre FROM places")

я получаю следующий вывод var_dump ($ наименований)

[43]=> 
array(1) { 
    ["nombre"]=> 
    string(41) "Industriales de Campeche" 
} 
[44]=> 
array(1) { 
    ["nombre"]=> 
    string(67) "Evaristo Garc�a ESE" 
} 
[45]=> 
array(1) { 
    ["nombre"]=> 
    string(39) "San Jose Popay�n" 

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

enter image description here

Так как вы можете видеть, поля, содержащие специальные символы, отображаются в шестнадцатеричном представлении Тион. Когда я использую этот инструмент http://www.rapidtables.com/convert/number/hex-to-ascii.htm, я могу без проблем конвертировать шестнадцатеричные поля (отображаются специальные символы), но дело в том, что я не могу заставить его работать в codeigniter. Несмотря на то, что я использую кодировку utf-8, специальные символы продолжают отображаться как .

Стоит сказать, что перед шифрованием базы данных у меня не было проблем.

+1

http://stackoverflow.com/questions/279170/how-to-support-utf-8-completely-in-a-web-application – Sammitch

+0

я есть пробовал все это – hjsjar

+0

Вы говорите: «Я пробовал все это», но вы действительно его прочитали? Кодировка MySQL utf-8 - это *** не *** кодировка UTF-8. Я полагаю, что ваш столбец данных является «блобом»? и/или 'unicode'? пожалуйста, подробно расскажите о своей структуре таблиц. – Martin

ответ

0

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

  1. Набор стол и поле сортировки для "utf8_general_ci"
  2. Установить тип мета содержание в HTML, как показано ниже

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> 
    
+0

Я сожалею, но это совершенно бесполезно, возможно, стоит прочитать [ссылку] (http://stackoverflow.com/questions/279170/how-to-support-utf-8-completely-in-a- веб-приложение), данное Саммичем в его комментариях – Martin

0
  • Проверьте, что в столбце данных MySQL используется _unicode_ или utf8mb4_ сортировки символов. Также проверьте, что ваша таблица в целом использует тот же набор символов (в PHPMyAdmin смотрите в <table> -> Operations -> Collation).

  • Убедитесь, что ваше соединение с MySQL использует набор символов подключения UTF8mb4_ (см. Ниже).

  • Убедитесь, что ваши HTML заголовки установлены в UTF-8 (в заголовки, не<head> раздел страницы, хотя это не помешает установить в UTF-8 тоже.).

Я уверен, что ваш вопрос приходит, что ваш подключение к базе данных с вашего PHP (или любой другой) не требуется полный UTF-8 набор символов.

// In your database connection class. 
// Once initial contact has been established 
$this->dbObject->set_charset("utf8mb4"); 

Некоторые дальнейшего чтения: UTF-8 all the way through