直接从Google Cloud Storage读取文本文件时,来自Buffer的奇怪字符

问题描述

直接从Google Cloud Storage中读取文本文件时,来自Buffer的奇怪字符

我一直在尝试各种编码并通过express.js发送标头,但我无法弄清楚。我的问题是,总是有一些字符是带有问号的正方形。如果我下载文件,看起来不错。当我尝试直接读取文件时,它运行不正常,并显示方形字符。我相信缓冲区中出了点问题。有没有人有过直接从Google Cloud Storage中读取非英语文本文件的经验?

showing the characters

dependencies {
    implementation ('org.springframework.boot:spring-boot-starter-web') {
        exclude group : 'org.apache.tomcat.embed',module : 'tomcat-embed-websocket'
    }
    implementation("org.springframework.boot:spring-boot-starter-actuator")
    // Lombok
    compileOnly("org.projectlombok:lombok")
    annotationProcessor("org.projectlombok:lombok")

    testCompileOnly("org.projectlombok:lombok")
    testAnnotationProcessor("org.projectlombok:lombok")

    // https://mvnrepository.com/artifact/org.slf4j/jcl-over-slf4j
    implementation('org.slf4j:jcl-over-slf4j:2.0.0-alpha1')
    implementation('org.springdoc:springdoc-openapi-webmvc-core:1.4.4')
}

解决方法

我碰巧有幸在发布问题后很快找到答案。

不确定是什么引起了问题,但是我最终使用了string_decoder。我认为文件中存在UTF8的其他版本(不确定),但这就是为什么我不得不(再次)将其解码为utf8的原因。

var StringDecoder = require('string_decoder').StringDecoder;

var decoder = new StringDecoder('utf8');

所以会是这样。

  console.log('Concat Data');
  var buf = '';
  var decoder = new StringDecoder('utf8');
  archivo.on('data',function (d) {
    buf += decoder.write(d);
  }).on('end',function () {
    console.log("End");
    console.log(buf)
    res.json(buf);
    
  }).on('error',function (e) {
    res.json(e)
  });

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...