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

Как да решим проблема с кодирането на символи в MySQL?

Проблемът с кодирането на символи в MySQL е, когато вашата MySQL база данни причинява UTF8 знаци (като å, ä и ö) да се показват погрешно. Това е така, защото по подразбиране MySQL използва набор от символи latin1. Този проблем стана важен поради глобалния характер на уеб съдържанието в наши дни. Можете да го разрешите, като зададете кодирането на MySQL на UTF8. Това може да стане по няколко начина.

  1. Изпълнете заявка „SET NAMES ‘utf8’” в началото на всяка връзка – това ще принуди MySQL да използва UTF8 за целия живот на тази връзка. Това е добър вариант, ако нямате достъп до файла my.cnf (linux/mac) / my.ini (windows).
  2. Намерете и редактирайте файла my.cnf (linux/mac) / my.ini (windows) на вашия сървър на база данни. Добавете следните редове към mysqld раздел :[mysqld] default-character-set=utf8 skip-character-set-client-handshake Сега, ако рестартирате MySQL сървъра, кодирането на символи в MySQL трябва по подразбиране да е UTF8
  3. Ами ако вече имате база данни? Как да конвертирам съдържанието му в UTF8? Можете да използвате следните 3 заявки. Заменете DATABASE_NAME, TABLE_NAME и FIELD_NAME с вашите стойности. alter table TABLE_NAME модифицира FIELD_NAME blob; промяна на база данни DATABASE_NAME charset=utf8; alter table TABLE_NAME модифицира FIELD_NAME varchar(255) набор от знаци utf8; Преобразувайте полето в BLOB, това е двоичен тип поле. След това променяме набора от символи на базата данни на utf8. Накрая преобразуваме нашето поле обратно в текст или varchar.

Можете да проверите кодирането на символите си в MySQL със следната заявка.

По подразбиране MySQL кодиране на символи

mysql> show variables like 'char%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | latin1                     |
| character_set_connection | latin1                     |
| character_set_database   | latin1                     |
| character_set_filesystem | binary                     |
| character_set_results    | latin1                     |
| character_set_server     | latin1                     |
| character_set_system     | latin1                     |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

Задължително MySQL кодиране на знаци

mysql> show variables like 'char%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

Също така ще трябва да се уверите, че вашата програмна рамка като Django, Code Igniter и т.н. използва UTF8 кодиране.

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Имената на таблици в MySQL чувствителни ли са малките букви?

  2. MySQL еквивалент на функцията DECODE в Oracle

  3. Алтернатива на Intersect в MySQL

  4. Как да създадете MySQL база данни в cPanel

  5. CURRENT_DATE Примери – MySQL