Android 导出CSV文件乱码问题处理

server/2025/1/17 18:06:17/

最近有一个需求,需要在Android端导出CSV文件,自测是用的WPS,没啥问题。可到了测试那边,用Excel直接打开就是乱码,需要在Excel数据里面用【从文件/CSV】打开。这样就显示非常的不方便。

解决办法:

public static void exportToCsv(List<String[]> data, String filePath) throws IOException {File csvFolder = new File(FileIO.CSV_PATH);boolean isPresent = csvFolder.exists();if (!isPresent) {csvFolder.mkdir();}//FileWriter writer = new FileWriter(filePath);FileOutputStream fos = new FileOutputStream(filePath);// 写入BOMfos.write(0xEF); // 239fos.write(0xBB); // 191fos.write(0xBF); // 189OutputStreamWriter writer = new OutputStreamWriter(fos, StandardCharsets.UTF_8);for (String[] row : data) {String csvRow = String.join(",", row);writer.write(csvRow + "\n");}writer.flush();writer.close();}

解决方案:使用UTF-8 BOM。


http://www.ppmy.cn/server/159151.html

相关文章

Docker实战案例:构建并部署一个Node.js Web应用

在当今快速迭代的软件开发环境中,容器化技术以其轻量级、可移植性和高效资源利用等特性,成为了开发和运维团队不可或缺的工具。Docker作为容器技术的佼佼者,极大地简化了应用的打包、分发和部署流程。本文将通过一个完整的Node.js Web应用案例,展示如何使用Docker从代码编写…

苹果电脑docker突然没有响应 已解决

电脑信息: M1 MacOS Sequoia 15.2 1.删除vmnetd sudo rm /Library/PrivilegedHelperTools/com.docker.vmnetd2.复制文件 sudo cp /Applications/Docker.app/Contents/Library/LaunchServices/com.docker.vmnetd /Library/PrivilegedHelperTools/3.重启docker服务

kotlin中的flow使用,Flow跟生命周期结合

kotlin的Flow可以连续异步发出多个数据。 1. 普通flow,冷流类似于一个函数&#xff0c;当开始收集时才开始运行 val coldStream flow {for (i in 1..5) {delay(100L)emit(i)}} val collect1 buildString {coldStream.collect { append(it).append(", ") } }.remo…

WPS excel使用宏编辑器合并 Sheet工作表

使用excel自带的工具合并Sheet表&#xff0c;我们会发现需要开通WPS会员才能使用合并功能&#xff1b; 那么WPS excel如何使用宏编辑器进行合并 Sheet表呢&#xff1f; 1、首先我们要看excel后缀是 .xlsx 还是 .xls &#xff1b;如果是.xlsx 那么 我们需要修改为 .xls 注…

Windows远程桌面网关出现重大漏洞

微软披露了其Windows远程桌面网关&#xff08;RD Gateway&#xff09;中的一个重大漏洞&#xff0c;该漏洞可能允许攻击者利用竞争条件&#xff0c;导致拒绝服务&#xff08;DoS&#xff09;攻击。该漏洞被标识为CVE-2025-21225&#xff0c;已在2025年1月的补丁星期二更新中得到…

为什么npm i 要加上--save-dev

在 npm 中&#xff0c;--save-dev 是一个标志&#xff0c;用于将依赖项安装为开发依赖。这些依赖项通常是开发过程中需要使用的工具或库&#xff0c;而不是在生产环境中运行代码时需要的依赖。 开发依赖&#xff08;DevDependencies&#xff09; 当你在项目中使用 npm install…

TouchGFX学习笔记(一)

配置请参考链接&#xff1a;TouchGFX超低配置移植教程-CSDN博客 一&#xff0c;显示配置 1.适当增加堆栈大小 2.适当增大缓冲大小 双重缓冲消除了任何撕裂的风险&#xff0c;无论渲染下一帧需要多长时间&#xff0c;因为TfT控制器&#xff0c;例如&#xff0c;总是可以访问最…

Sprint Boot教程之五十八:动态启动/停止 Kafka 监听器

Spring Boot – 动态启动/停止 Kafka 监听器 当 Spring Boot 应用程序启动时&#xff0c;Kafka Listener 的默认行为是开始监听某个主题。但是&#xff0c;有些情况下我们不想在应用程序启动后立即启动它。 要动态启动或停止 Kafka Listener&#xff0c;我们需要三种主要方法…