Open Llolow opened 1 year ago
I found a few problems with this issue:
Hi @Llolow. I don't have a solution yet, but I wanted to share an update.
It looks like the issue you've found goes beyond Cloud Functions for Firebase, and I'm in conversations with other teams at GCP to find the underlying issue. Thanks for your patience.
Hello @taeold, thanks for the answer.
I will use for the moment the fact than gen1 and gen2 functions can coexist
@Llolow Sorry for not responding sooner.
I've learned since then that event.document
will contains that's formatted as octal-encoded UTF-8 string. To retrieve the "actual" document path, then, you can convert the bytes as utf-8 string:
const planetId = Buffer.from(event.params.planeteId, "binary").toString("utf-8")
I would agree with you to think that this is pretty tricky. Let me try and see if we can come up with a way to do the conversion in the SDK itself so you don't have to bother with these kind of problems.
Hi @taeold , We were just hit by this too. It's definitely a regression when migrating from v1 to v2, and it ought to be noted in the migration document that you can no longer rely on the 'params' when using special characters (even non-ascii ansi characters like Å). If we add a workaround like the above - how will that effect a possible future fix? Will the workaround then break?
Also: I definitely don't consider this to be a feature request, but a serious bug that affects real-life usage of Cloud Functions v2.
Hi again @taeold , In my own testing, the workaround you suggest can be 'dangerous' in case the underlying issue is suddenly fixed:
Taking the string "SDÅV" as an example: Suggested workaround:
d = Buffer.from("SDÃ V", "binary").toString("utf-8") 'SDÅV'
Application of the suggested workaround in case the parameter is already in utf-8:
e = Buffer.from("SDÅV", "binary").toString("utf-8") 'SD�V'
Hey, this is an issue for us as well.
If the document id in event.params
doesn't 100% match that of the actual firestore document, then this must surely be a bug in the SDK?
Same issue here. Definitely a bug if v1 and v2 behave differently.
Version info
node: v18.16.0 firebase-functions: v4.4.1 firebase-tools: v12.5.2 firebase-admin: v11.8.0
Steps to reproduce
This issue was not encountered in gen1, and special characters in path parameters were correctly encoded.
Deploy a Firebase Cloud Function Gen2 using a Firestore trigger as follows:
planeteId
document contains special characters such as "é", "è", "à", etc. Example: "Helvétios", "Électre".planeteId
value in the deployed functionExpected behavior
The
planeteId
value should be correctly encoded and displayed in UTF-8, preserving special characters such as "é", "è", "à", etc., in the deployed Firebase Cloud Function Gen2.Actual behavior
After deploying the Firebase Cloud Function Gen2, the
planeteId
value appears to be incorrectly encoded, resulting in a value likeHelvétios
becomingHelvétios
orÉlectre
becomingÃlectre
.Were you able to successfully deploy your functions?
Yes, the deployment was successful without any error messages.