txt文件在windows中默认采用ANSI编码方式。

我们是采用阿里云oss方式存储文件的,需要下载时,在前端自定义a标签进行下载。

浏览器默认直接打开txt文件,但浏览器的编码是utf-8,这样就会显示乱码。

找了很多方案:

1、在a标签中添加download属性。(跨域后该属性会失效,同源可以)

2、(推荐)在后端上传文件时,增加application/octet-stream属性。

public void uploadStream(InputStream inputStream, String objectName) {
    OSS oss = new OSSClientBuilder().build(endpoint, accessKey, accessSecret);
    PutObjectRequest request = new PutObjectRequest(bucket, objectName, inputStream);
    ObjectMetadata metadata = new ObjectMetadata();
    metadata.setContentType("application/octet-stream");
    request.setMetadata(metadata);
    oss.putObject(request);
    oss.shutdown();
}

文档地址:https://help.aliyun.com/document_detail/106802.html

吐槽:竟然在Android SDK说明文档里

知止而后有定;定而后能静;静而后能安;安而后能虑;虑而后能得。