Firebase RTDB .gzip and Node JS encoding



我的应用程序使用Firebase实时数据库。已为数据库启用每日备份。该数据库包含带有重音的单词数据;Manutenção"。

  • 如果我在Firebase控制台中检查此文本,则显示为";Manutenção">
  • 如果我从Firebase控制台导出数据;Manutenção">
  • 但如果我下载备份文件(.gzip(并在提取后,它显示为";Manuten√ß√£o"。注意这里的重音编码。此编码根据https://string-functions.com/encodingtable.aspx?encoding=65001&解码=10000
  1. 为什么.gip备份文件对重音符号进行编码
  2. 如何以编程方式解码这些编码重音?我尝试使用节点模块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
  1. 我如何才能回来"Manutenção;从";Manuten√ß√£o">

谢谢!

检查线程,似乎是macOS 的问题

  • 如何转换python中特殊字符的编码
  • 如何解码这些字符?√°;√©;√≠

溶液

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;
}

最新更新