AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 344556
Accepted
John
John
Asked: 2025-01-05 17:17:58 +0800 CST2025-01-05 17:17:58 +0800 CST 2025-01-05 17:17:58 +0800 CST

Valor de string incorreto para MariaDB + utf8mb4 + utf8mb4_uca1400_ai_ci

  • 772

Valor de string incorreto: \'\\xCD\\xCF\\xD7\\xA7\\xC9\\xFA...\\

Tudo no meu servidor deve estar utf8mb4, utf8mb4_uca1400_ai_cientão vamos analisar tudo.

Meu my.iniarquivo no Windows 10 para MariaDB 11.4.2:

[mysql]
default-character-set = utf8mb4

[mysqld]
datadir=C:/WAMP/MariaDB/data
port=3306
innodb_buffer_pool_size=50M
character-set-server=utf8mb4
character-set-client-handshake = FALSE
collation-server = utf8mb4_uca1400_ai_ci
general-log
general-log-file=C:/WAMP/MariaDB/logs/queries.log

[client]
default-character-set = utf8mb4
port=3306
plugin-dir=C:\WAMP\MariaDB/lib/plugin

A consulta local que uso para verificar conjuntos de caracteres e comparações:

SELECT LOWER(VARIABLE_NAME) AS `variable_name`, 
       GLOBAL_VALUE AS `global_value`, 
       DEFAULT_VALUE AS `default_value` 
FROM INFORMATION_SCHEMA.SYSTEM_VARIABLES 
WHERE VARIABLE_NAME LIKE '%CHARACTER_SET_%' 
   OR VARIABLE_NAME LIKE '%COLLATION_%' 
ORDER BY `VARIABLE_NAME` ASC;

Conjuntos de caracteres e comparações.

Toda vez que faço uma migração de servidor, executo o seguinte:

SET CHARACTER SET 'utf8';
SET collation_connection = 'utf8mb4_uca1400_ai_ci';
SET GLOBAL collation_connection = 'utf8mb4_uca1400_ai_ci';
SET GLOBAL collation_database = 'utf8mb4_uca1400_ai_ci';
SET GLOBAL collation_server = 'utf8mb4_uca1400_ai_ci';

Os SHOW CREATE DATABASEretornos em utf8mb4e utf8mb4_uca1400_ai_ci.

A coluna associada ao erro usa utf8mb4_uca1400_ai_ci.

Isto é para uma mensagem de e-mail com o assunto "[标题]Satisfaça todas as suas fantasias sobre a turnê da mão de Xianxia." 🙄︀ Acho que algo se perdeu na tradução. Não tenho tudo no máximo em conjuntos de caracteres e agrupamentos, embora eu ache que já cobri a maioria das coisas. Então...

O que ainda não defini corretamente para conjuntos de caracteres e/ou ordenação e como posso garantir que tudo o que é possível esteja definido como utf8mb4e utf8mb4_uca1400_ai_ci?

mariadb
  • 1 1 respostas
  • 30 Views

1 respostas

  • Voted
  1. Best Answer
    John
    2025-01-07T23:09:53+08:002025-01-07T23:09:53+08:00

    O problema era com uma string sendo importada que não era compatível com UTF-8, como os comentários podem confirmar. O único objetivo era relatar mensagens de e-mail que não eram compatíveis (por uma série de razões) e ter informações identificáveis ​​suficientes para determinar qual mensagem estava causando o problema.

    Usando PHP, o seguinte pega $stringe detecta automaticamente o conjunto de caracteres inicial e o converte para UTF-8:

    iconv(mb_detect_encoding($string, mb_detect_order(), true), "UTF-8", $string);

    Presumo que isso não funcionará em 100% dos cenários, embora tenha resolvido as instâncias do problema que encontrei. Se um problema exceder esta solução que está funcionando atualmente, postarei um Q/A diferente.

    • 0

relate perguntas

  • Erro de cabeçalho do MariaDB

  • Erro 1046 Mariadb: nenhum banco de dados selecionado

  • Você ainda usa o MyISAM ou prefere o mecanismo de armazenamento Aria?

  • Como posso melhorar minha instrução SQL com resultados semanais com semana começando na quinta-feira ou em qualquer outro dia da semana?

  • Quando é o momento certo para usar o MariaDB em vez do MySQL e por quê?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host

    • 12 respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Jin conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve