Maison  >  Questions et réponses  >  le corps du texte

Comment corriger le bug : #1977 - Impossible de convertir le caractère 'utf8' 0xD8AD en 'latin1'.

Je travaille avec phpMyAdmin et j'ai des valeurs de caractères arabes dans ma colonne de nom comme کلب الرقيÙ'Ø© علی العزیزبوری, Je veux les convertir sous la forme correcte.

J'ai essayé la requête suivante et elle a converti la plupart des enregistrements de la table sous la forme correcte.


ALTER DATABASE alfeker_book CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE guestbook CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
UPDATE guestbook SET name = CONVERT(BINARY CONVERT(name USING latin1) USING utf8mb4);

J'ai également essayé d'autres méthodes.

UPDATE guestbook SET name = CONVERT(BINARY CONVERT(name USING binary) USING utf8mb4);

Mais plusieurs d'entre eux restent les mêmes et affichent l'erreur suivante.

#1977 - Cannot convert 'utf8' character 0xD8AD to 'latin1'

J'ai également essayé cette requête. :

SELECT id,name, CONVERT(BINARY CONVERT(name USING latin1) USING utf8mb4) AS converted_name FROM guestbook;

Cette requête fonctionne bien et affiche parfaitement les caractères non convertis. Mais lorsque j'utilise la requête de mise à jour, cela ne fonctionne pas.

P粉574695215P粉574695215459 Il y a quelques jours561

répondre à tous(1)je répondrai

  • P粉460377540

    P粉4603775402023-07-19 00:22:56

    Il s'agit d'un charabia ou d'un "double encodage" de texte arabe.

    Il existe plusieurs façons de réparer les données. Il n’y a qu’une seule façon d’améliorer la situation, d’autres ne feront qu’empirer les choses.

    Vous jetez un œil à ce problème de caractère UTF-8 ; ce que je vois n'est pas ce que je stocke et suivez les conseils pour obtenir la valeur hexadécimale de ce qui se trouve dans la base de données, en plus de la définition de schéma actuelle. SHOW CRÉER UN TABLEAU. Veuillez également fournir SHOW VARIABLES LIKE 'char%' et les paramètres de connexion.


    Avant de sauvegarder les différents ALTER et CONVERT, veuillez fournir les valeurs hexadécimales et je pourrai choisir la bonne méthode de conversion.


    répondre
    0
  • Annulerrépondre