PHP mysql – Unzulässige Mischung der Kollatierungen utf8_general_ci,IMPLICIT und utf8mb4_general_ci,COERCIBLE [Duplikat]
Posted: 19 Jan 2025, 19:04
Ich extrahiere Text aus einem Bild mithilfe der Google Cloud Vision API und überprüfe dann, ob dieser Text bereits in der Datenbank vorhanden ist, wobei ich nur einen Teil des Textes verwende.
Dies ist der Code:
Es funktioniert mindestens 9 von 10 Mal, aber manchmal erhalte ich diese Fehlermeldung:
Wie Sie sehen können, entferne ich alle nicht alphanumerischen Zeichen und Leerzeichen aus $txt, sodass es keine Sonderzeichen enthalten sollte.
Dies ist ein Beispieltextauszug:
Ich habe diese Frage gesehen:
Unzulässige Mischung aus Sortierungen (utf8_unicode_ci,IMPLICIT) und (utf8_general_ci,IMPLICIT) für Operation '='< /p>
und ähnliches, aber keine der Antworten hilft, es sieht so aus, als würden sie vorschlagen, den Zeichensatz in der Tabelle zu ändern. Ist das wirklich notwendig?
Wie dieses Problem für meinen Fall lösen? Ich würde auch eine Lösung akzeptieren, die eine Einstellung für die Google-API anzeigt, die verhindert, dass Textextrakte in seltsamen Zeichensätzen gesendet werden.
Dies ist der Code:
Code: Select all
$vision = new VisionClient([
'projectId' => 'bla-456',
'keyFilePath' => $root . '/key.json'
]);
$immg = $vision->image(
fopen($tempHashPic, 'r'),
['TEXT_DETECTION']
);
$tadaa = $vision->annotate($immg);
$obj = $tadaa->text();
if(isset($obj) && $obj[0] != null){
$arr = $obj[0]->info();
$txt = $arr['description'];
$txt = str_replace(["\n\r", "\n", "\r"], ' ', $txt);
$txt = str_replace(' ', ' ', $txt);
$txt = trim($txt);
$txt = preg_replace("/[^A-Za-z0-9 ]/", "", $txt);
$firstsixty = substr($txt, 0, 60);
$firstsixty = $con -> real_escape_string($firstsixty);
$txtQuery = mysqli_query($con, "SELECT * FROM memes WHERE ocr_text LIKE '$firstsixty%' LIMIT 1");
}
Code: Select all
Illegal mix of collations (utf8_general_ci,IMPLICIT) and (utf8mb4_general_ci,COERCIBLE) for operation 'like'
Dies ist ein Beispieltextauszug:
Code: Select all
Sie Lass uns einfach gemütlich einen Film gucken Sie 5 Minuten später
Unzulässige Mischung aus Sortierungen (utf8_unicode_ci,IMPLICIT) und (utf8_general_ci,IMPLICIT) für Operation '='< /p>
und ähnliches, aber keine der Antworten hilft, es sieht so aus, als würden sie vorschlagen, den Zeichensatz in der Tabelle zu ändern. Ist das wirklich notwendig?
Wie dieses Problem für meinen Fall lösen? Ich würde auch eine Lösung akzeptieren, die eine Einstellung für die Google-API anzeigt, die verhindert, dass Textextrakte in seltsamen Zeichensätzen gesendet werden.