Resumo : neste tutorial, exploraremos os conjuntos de caracteres do MySQL e sua importância na forma como o MySQL armazena dados de texto.
No MySQL, o conjunto de caracteres e o agrupamento são conceitos essenciais que definem como os dados são armazenados e classificados em colunas de texto.
Compreender conjuntos de caracteres e agrupamentos é crucial para projetar bancos de dados que possam lidar com diferentes idiomas e requisitos de texto.
Introdução aos conjuntos de caracteres MySQL
Um conjunto de caracteres é uma coleção de caracteres com uma codificação exclusiva. Ele define o conjunto de caracteres que podem ser usados em uma coluna de texto, como letras, números, símbolos e caracteres especiais.
O MySQL suporta vários conjuntos de caracteres, e a escolha do conjunto de caracteres determina o intervalo de caracteres que pode ser armazenado em uma coluna.
Conjuntos de caracteres comuns incluem utf8
, utf8mb4
, latin1
, utf16
e muitos outros. Para listar todos os conjuntos de caracteres no servidor MySQL atual, use a seguinte instrução:
SHOW CHARACTER SET;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Aqui está a saída parcial:
+----------+---------------------------------+---------------------+--------+
| Charset | Description | Default collation | Maxlen |
+----------+---------------------------------+---------------------+--------+
| armscii8 | ARMSCII-8 Armenian | armscii8_general_ci | 1 |
| ascii | US ASCII | ascii_general_ci | 1 |
| big5 | Big5 Traditional Chinese | big5_chinese_ci | 2 |
| binary | Binary pseudo charset | binary | 1 |
...
Linguagem de código: PHP ( php )
A Maxlen
coluna especifica o número de bytes que um caractere em um conjunto de caracteres contém.
Alguns conjuntos de caracteres contêm caracteres de byte único, por exemplo, latin1
, latin2
, cp850
, etc., enquanto outros conjuntos de caracteres contêm caracteres de múltiplos bytes.
Os conjuntos de caracteres padrão são utf8mb4
e utf8mb4_0900_ai_ci
. No entanto, você pode alterá-los de acordo.
Convertendo entre diferentes conjuntos de caracteres
O MySQL fornece duas funções que permitem converter strings entre diferentes conjuntos de caracteres: CONVERT
e CAST
.
A sintaxe da CONVERT
função é a seguinte:
CONVERT(expression USING character_set_name)
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
A CAST
função é semelhante à CONVERT
função. Ele converte uma string em um conjunto de caracteres diferente:
CAST(string AS character_type CHARACTER SET character_set_name)
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Dê uma olhada no seguinte exemplo de uso da CAST
função:
SELECT CAST(_latin1'MySQL character set' AS CHAR CHARACTER SET utf8);
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Configurando conjuntos de caracteres para conexões de cliente
Para configurar um conjunto de caracteres para uma conexão de cliente, você pode fazer uma das seguintes maneiras:
1) Usando a instrução SET NAMES
Emita a SET NAME
instrução após o cliente se conectar ao servidor de banco de dados MySQL. Por exemplo, para definir um conjunto de caracteres Unicode utf8mb4
, use a seguinte instrução:
SET NAMES 'utf8mb4';
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
2) Usando a opção –default-character-set
Se o aplicativo suportar a --default-character-set
opção, você poderá usá-la para definir o conjunto de caracteres.
Por exemplo, a ferramenta cliente mysql suporta --default-character-set
a opção e você pode configurá-la no arquivo de configuração da seguinte maneira:
[mysql]
default-character-set=utf8mb4
Linguagem de código: texto simples ( texto simples )
3) Usando o charset em strings de conexão
Alguns conectores MySQL permitem especificar um conjunto de caracteres. Por exemplo, se você usar PHP PDO , poderá definir o conjunto de caracteres no nome da fonte de dados da seguinte maneira:
$dsn ="mysql:host=$host;dbname=$db;charset=utf8mb4";
Linguagem de código: PHP ( php )
Independentemente da forma como você o utiliza, certifique-se de que o conjunto de caracteres usado pelo aplicativo corresponda ao conjunto de caracteres armazenado no servidor de banco de dados MySQL.
Resumo
- Os conjuntos de caracteres definem como o MySQL armazena dados em colunas de texto.
- Use a
SHOW CHARACTER SET
instrução para listar todos os conjuntos de caracteres. - Use a função
CONVERT()
ouCAST()
para converter entre conjuntos de caracteres.