js 按照正确的文件编码读取文件 || 以 flex-item 为基准的绝对定位元素被祖父的 flex-item 挡住

按指定文件编码读取文件

  • 以 arrayBuffer 的形式读取文件
const reader = new FileReader()
reader.onload = () => {

}
  • 在 onload 回调中将数据转为 Uint8Array 格式, 再一一读取 Uint8Array 的CharCode, 然后判断文件编码
const array = new Uint8Array(fileReader.result);
const codes = array.map(x => String.fromCharCode(x))
const charset = jschardet.detect(codes)
  • 最后利用 TextDecoder 解码即可
const text = new TextDecoder(charset.encoding).decode(array) // 但是要注意 jschardet 的 encoding 表述和 TextDecoder 可能不一致. 如 'x-mac-cyrillic' 前者称为 'MacCyrillic'
console.log(text)

flex-item 被祖父的 flex-item 挡住