我正在开发一个应用程序,世界各地的人们在搜索框中输入地址,城市或其他内容。然后他们可以选择与目标匹配的结果。选定的结果包含address.components long_name中的文本。
地理编码器API返回的一些示例:
"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" ]
在这种情况下我会例如商店:
“国王街”
“纽波特”
“斯塔福德”
进入我的数据库。
然后......此应用程序可以存储来自所有国家/地区的位置,也可能存储在这些国家/地区使用的所有官方本地语言 - 谷歌中的“long_name”字符串。 请注意,我在地理编码器中设置了国家/地区和语言,以便以用户的母语显示地图,以及以正确的语言为用户返回结果(address.components字符串)。
有人知道在MySql中使用UTF-8(即3字节UNICODE)时是否可以精确存储address.components long_names(字符集),或者我是否需要使用utf8mb4字符集(4- byte UNICODE)?
如果我需要使用utf8mb4字符集,那是什么原因? Google Geocoder存储哪些语言需要utf8mb4(4字节)UNICODE,以便在存储到数据库时不会丢失任何字符/语言信息?
答案 0 :(得分:1)
如果您的应用程序是绿地工作(新应用程序)并且您使用的是最新版本的MySQL或MariaDb,则应使用utf8mb4
。它将处理Unicode中的所有内容,包括一些模糊的字符集,并且您不必再考虑这个问题。
答案 1 :(得分:0)
评论意味着真正的问题是关于3字节utf8
和4字节utf8mb4
的 size 。 (我假设您使用的是VARCHAR
或TEXT
?
utf8
列中会导致截断或其他错误。所以,你也可以使用utf8mb4来处理所有事情。
除MySQL之外的每个应用程序," UTF-8"指可变长度编码;它甚至可以超过4个字节(尽管尚未为任何字符分配超过4个字节的代码)。