Firebase RTDB .gzip 和 Node JS 编码
Posted
技术标签:
【中文标题】Firebase RTDB .gzip 和 Node JS 编码【英文标题】:Firebase RTDB .gzip and Node JS encoding 【发布时间】:2022-01-23 04:37:16 【问题描述】:我正在为我的应用使用 Firebase 实时数据库。为数据库启用每日备份。 该数据库包含带有重音符号的数据,例如“Manutenção”。
如果我在 Firebase 控制台中检查此文本,它会显示为“Manutenção”。 如果我从 Firebase 控制台导出数据,它会显示为“Manutenção”。 但如果我下载备份文件 (.gzip) 并在解压后显示为“Manuten√ß√£o”。注意这里的重音编码。这个编码是根据https://string-functions.com/encodingtable.aspx?encoding=65001&decoding=10000-
为什么 .gzip 备份文件对重音符号进行编码?
如何以编程方式解码这些编码的重音符号?
我尝试使用节点模块iconv,但无法转换。
var Iconv = require('iconv').Iconv;
var iconv = new Iconv('macintosh', 'UTF-8');
var buffer = iconv.convert('Manutenção');
console.log(buffer.toString()); // Manutenção
-
如何从“Manuten√ß√£o”取回“Manutenção”?
谢谢!
【问题讨论】:
【参考方案1】:查看线程,好像是macOS的问题
How can I convert encoding of special characters in python? How to decode these characters? √° √© √≠解决方案
const iconv = require('iconv-lite');
let isMacRomanEncoded = (data.indexOf('¬') > -1) || (data.indexOf('√') > -1);
if(isMacRomanEncoded)
// MacRoman encoded, convert to utf-8
let buffer = iconv.encode(data, 'MacRoman');
return iconv.decode(buffer, 'utf-8');
else
// not MacRoman encoded, return the original
return data;
【讨论】:
以上是关于Firebase RTDB .gzip 和 Node JS 编码的主要内容,如果未能解决你的问题,请参考以下文章
Swiftui Firebase RTDB 不会在视图中更新
本地写入带有附加侦听器的 Firebase RTDB 或 Firestore 是不是需要读取操作?
Flutter Firebase Functions:调用函数时出错