Mysql
 sql >> база данни >  >> RDS >> Mysql

Не може правилно да се вмъкнат гръцки знаци в базата данни на mysql

Вашият проблем е свързан с кодирането ви. Важно е цялата кодът има същия набор от знаци, за да се избегнат проблеми, при които знаците се показват неправилно.

Има доста настройки, които трябва да бъдат правилно дефинирани и силно бих препоръчал UTF-8, тъй като в него има повечето букви, от които се нуждаете (скандинавски, гръцки, арабски, руски и т.н.).

Ето малък списък с неща, които трябва да бъдат настроени на конкретен набор от знаци.

Заглавки

  • Задаване на набора от знаци както в HTML, така и в PHP заглавките на UTF-8

    • PHP:

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

      (PHP заглавките трябва да се поставят преди всички изход (ехо, интервал, HTML)!)

    • HTML:

      <meta charset=utf-8" />
      

      (HTML-заглавките се поставят в <head> / </head> маркер)

Връзка

  • Трябва също да посочите набора от знаци в самата връзка . За вашия пример за PDO това се прави по следния начин

    $handler = new PDO('mysql:host=localhost;dbname=database;charset=utf8', 'username', 'password', array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET CHARACTER SET UTF8"));
    

    Обърнете внимание на charset=utf8 -атрибут. Други MySQL-API имат различни начини за това, ако използвате нещо друго в бъдеще.

База данни

  • Вашата база данни и неговите таблици трябва да бъдат настроени на UTF-8. Обърнете внимание, че наборът от знаци е не същото като съпоставяне. Виждам, че вече сте задали съпоставянето на UTF-8, така че това е добре, но направете същото за цялата база данни и всички таблици.

    Можете да направите това, като стартирате заявките по-долу веднъж за всяка база данни и таблици (например в phpMyAdmin)

    ALTER DATABASE databasename CHARACTER SET utf8 COLLATE utf8_unicode_ci; 
    ALTER TABLE tablename CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
    

    Имайте предвид, че всички данни, които вече са съхранени в базата данни, няма да имат автоматично фиксирани счупени знаци. Затова е важно да направите това, преди да вмъкнете данни или да ги поставите отново, след като зададете набора от знаци.

спецификация на php.ini

  • Във вашия php.ini файл, трябва да посочите набора от знаци по подразбиране за вашата платформа, като този

    default_charset = "utf-8";
    

Кодиране на файлове

  • Важно е също .php самият файл е кодиран UTF-8. Ако използвате Notepad++, за да напишете кода си, това може да стане в падащото меню „Формат“ в лентата на задачите.

Емоджита

  • В MySQL (и в таблицата, и в базата данни, и в обекта за връзка) ще трябва да посочите utf8mb4 набор от знаци, за разлика от обикновения utf8 , ако искате да работите с емоджита.

Не знам много от Java, но ако можете да зададете атрибути на UTF-8 и там, направете го. По същество всичко, което може да бъде настроено на определен набор от знаци, трябва да бъде настроено на същото.

Ако следвате всички указания по-горе, има вероятност проблемът ви да бъде решен. Ако не, можете да разгледате тази публикация в StackOverflow: UTF-8 докрай .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Facebook user_id :big_int, int или низ?

  2. Възстановете структурата на таблицата от frm и ibd файлове

  3. В CentOS7 не може да стартира MySQL

  4. Как да извикам MySQL съхранени процедури от Perl?

  5. MySQL ДОБАВЯНЕ НА КОЛОНА