Ich entwickle eine Anwendung, bei der Menschen auf der ganzen Welt eine Adresse, eine Stadt oder etwas anderes in ein Suchfeld eingeben. Dann können sie die Ergebnisse auswählen, die ihrem Ziel entsprechen. Das ausgewählte Ergebnis enthält Text aus dem Adreßkomponenten long_name.Benötige ich den utf8mb4-Zeichensatz zum Speichern der Geocodierung von address.components long_names?
einige Beispiele durch die geocoder API zurückgegeben:
"long_name" : "King's Street",
"short_name" : "King's St",
"types" : [ "route" ]
"long_name" : "Newport",
"short_name" : "Newport",
"types" : [ "postal_town" ]
"long_name" : "Staffordshire",
"short_name" : "Staffordshire",
"types" : [ "administrative_area_level_2", "political" ]
In diesem Fall würde ich z.B. Speicher:
"King Street"
"Newport"
"Staffordshire"
in meiner Datenbank.
Dann ... diese Anwendung kann von Standorten aus allen Ländern und in möglicherweise allen offiziellen Muttersprachen in diesen Ländern speichern - von google in den "long_name" Zeichenfolgen. Beachten Sie, dass ich sowohl das Land als auch die Sprache im Geocoder einstelle, um sowohl die Karte in der Muttersprache des Benutzers anzuzeigen als auch das Ergebnis (address.components strings) in der richtigen Sprache für den Benutzer zurückzugeben .
Wer weiß, ob die address.components long_names genau gespeichert werden kann (zeichenweise), wenn UTF-8 in MySql verwendet wird (das ist ein 3-Byte UNICODE), oder wenn ich den utf8mb4-Zeichensatz (4 -Byte Unicode)?
Wenn ich den utf8mb4-Zeichensatz verwenden muss, was ist der Grund dafür? Welche Sprachen, die von Google Geocoder gespeichert werden, benötigen utf8mb4 (4-Byte) UNICODE, um beim Speichern in der Datenbank keine Zeichen-/Sprachinformationen zu verlieren?
Alles, was sagt, es ist UTF-8 ist als Standard 4-Byte-UTF-8. MySQL ist die Ausnahme, dass sie anfänglich für 3 Bytes gingen. Es wird dringend empfohlen, "utf8mb4" so oft wie möglich über die 3-Byte-Version zu verwenden. [Dieser StackOverflow Beitrag] (http://stackoverflow.com/questions/279170/utf-8-all-the-way-through) sollte Ihnen auch sehr hilfreich sein. – Martin
Ich habe den Beitrag geprüft, mit dem Sie verknüpft sind. Diese Person möchte UNICODE den ganzen Weg unterstützen. Mein Ansatz ist etwas anders. Ich muss unterstützen, was ich unterstützen muss. Wenn google geocoder keine Zeichensätze zurückgibt (siehe, welcher Geocoder in address.components long_name verwendet), die 4-Byte-UTF-8 benötigen, sehe ich keinen Grund, utf8mb4-Zeichensatz zu verwenden, da das einzige Ergebnis sein wird: a) viel mehr Daten in der Datenbank b) größere Indizes , die wiederum zu langsameren Abfragen und mehr Ressourcen auf dem Server führen. Gibt es eine Dokumentation, die zeigt, welche char-sets Geocoder verwendet? – bongobongo
Wenn ich diese Wahl ausführen würde, würde ich immer 'utf8mb4' wählen, weil die Verwendung eines anderen 'UTF8_' MySQL-Zeichensatzes einfach darauf wartet, dass das gleiche Problem zurückkommt und Sie an einem anderen Tag beißt. Ich habe keine Ahnung, was Geocoder verwendet, aber UTF8 ist jetzt ein defacto Web Standard Zeichensatz. Und die Größe von Datensätzen (sofern sie nicht wirklich massiv sind) wirkt sich nicht auf Indizes oder Datenabrufgeschwindigkeiten aus. MySQL ist gut bis zu Milliarden von Datenzeilen. – Martin