我们正在构建一个想要显示城市的应用程序。每个城市还具有存储在Firebase存储中的图像。我们正在使用Firebase控制台或以编程方式将数据添加到数据库中。当我们添加包含特殊字符的数据时,问题就来了,例如,我有以下网址:
https://firebasestorage.googleapis.com ... München.png
这是浏览器中的外观。如果我们使用Firebase控制台添加此url,则其保存方式与上面相同,但是,当我们以编程方式进行操作时,该url被保存:
https://firebasestorage.googleapis.com ... M%C3%BCnchen.png
所以下面的查询:
db.collection("cities")
.whereEqualTo(
"cityPictureUrl",
"https://firebasestorage.googleapis.com ... München.png"
);
由于数据库中的名称为M%C3%BCnchen
而不是München
,因此无法使用。如何以最正确的方式存储数据以避免不一致?
答案 0 :(得分:1)
您可以在查询之前对URI进行编码,如下所示:
String imageURI = "https://firebasestorage.googleapis.com ... München.png";
String imageURIEncoded = URLEncoder.encode(imageURI, "utf-8");
db.collection("cities")
.whereEqualTo(
"cityPictureUrl",
imageURIEncoded
);
URLEncoder.encode()
将“通过用表示字符的UTF-8编码的一个,两个,三个或四个转义序列替换某些字符的每个实例来编码统一资源标识符(URI)组件”