When using the MySQL database, sometimes the table may be garbled, which may cause queries, inserts and other operations to fail. This article will introduce the reasons why MySQL tables are garbled and how to solve them.
1. Reason
When your MySQL database and client do not use the same encoding, garbled characters will appear. For example, when your client uses UTF-8 encoding and the MySQL database uses GBK encoding, garbled characters will appear.
When certain character sets in the MySQL database do not match the character set you are currently using, garbled characters will also occur.
If you insert a GBK encoded string into a UTF-8 encoded table, garbled characters will be generated. .
2. Solution
If the encoding used by the MySQL database and the client is inconsistent, then we can modify the MySQL database encoding. In MySQL, you can use the following command to modify the encoding of the database:
ALTER DATABASE [database_name] DEFAULT CHARACTER SET [charset_name];
where database_name
is the name of your database, and charset_name
is the encoding name you want to set. For example, if you want to change the database to UTF-8 encoding, you can use the following command:
ALTER DATABASE mydatabase DEFAULT CHARACTER SET utf8;
If the above method does not solve the problem, Then it may be caused by a mismatch in the encoding of the table. We can use the following command to modify the encoding of the table:
ALTER TABLE [table_name] CONVERT TO CHARACTER SET [charset_name];
Among them, table_name
is the name of the table you want to modify, and charset_name
is the encoding name you want to set. For example, if you want to change the table mytable
in the database to UTF-8 encoding, you can use the following command:
ALTER TABLE mytable CONVERT TO CHARACTER SET utf8;
If some character sets in the MySQL database do not match the character set you are currently using, then we can use the following command to modify the character set:
SET NAMES [charset_name];
For example, if you are using UTF-8 characters Set, then you can use the following command:
SET NAMES utf8;
If you need to insert non-UTF-8 encoding into a UTF-8 encoded table data, then you can use the following command to convert the encoding:
CONVERT([string] USING [charset_name]);
Among them, string
is the string you want to insert, charset_name
is the encoding name you want to convert . For example, if you want to insert a GBK encoded string into a UTF-8 encoded table, you can use the following command:
INSERT INTO mytable (mycolumn) VALUES (CONVERT('你好', USING gbk));
If you already have garbled data in your table, you can use the data cleaning tool to process it. For example, you can use the iconv
command to convert GBK-encoded data to UTF-8 encoding:
$ iconv -f GBK -t UTF-8 < input.txt > output.txt
The input file is input.txt
and the output file is output.txt
.
Summary
The reason why the MySQL table is garbled may be inconsistent encoding, character set mismatch, inserting non-UTF-8 encoded data, etc. For different reasons, we can adopt different solutions, such as modifying the encoding of the MySQL database, modifying the encoding of the table, modifying the character set, converting the encoding when inserting data, or using data cleaning tools. When using the MySQL database, we should avoid garbled characters as much as possible to ensure the normal operation of the database.
The above is the detailed content of mysql table garbled code. For more information, please follow other related articles on the PHP Chinese website!