首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法使用characters在excel中显示汉字

无法使用characters在excel中显示汉字
EN

Stack Overflow用户
提问于 2021-02-23 10:20:03
回答 1查看 1.2K关注 0票数 0

我使用ICsvBeanWriter将数据导出为CSV,并试图在Excel.But中打开它。如果加载csv文件并将编码从西欧更改为65001 Unicode( UTF-8 ),则无法通过default.But查看default.But中的中文字符,然后我能够看到excel.So中显示的汉字。我的问题是:“是否可以用默认的UTF-8编码打开excel.So?

Controller.java

代码语言:javascript
运行
复制
    response.setHeader("Content-Disposition",
            "attachment; filename=Report " + downloadDateFormatted + ".csv");
    response.setHeader(HttpHeaders.ACCESS_CONTROL_EXPOSE_HEADERS, HttpHeaders.CONTENT_DISPOSITION);
    **response.setContentType("text/csv;charset=UTF-8");**
    CsvExporter csvExporter = new CsvExporter(transactions);
    csvExporter.export(response);

CsvExporter.java

代码语言:javascript
运行
复制
    public void export(HttpServletResponse response) throws IOException {
       csvWriter = new CsvBeanWriter(response.getWriter(), CsvPreference.STANDARD_PREFERENCE);
       writeHeaderRow();
    }

    private void writeHeaderRow() throws IOException {
    String[] csvHeader = {"Chinese address" };
            csvWriter.writeHeader(csvHeader);
    String[] nameMapping = { "chineseAddress" };
    csvWriter.write(transaction, nameMapping);
    }
    csvWriter.close();
    }

我尝试将字符集设置为utf-8,但它在西欧的Excel中仍然是默认打开的,我尝试使用UTF-16。但是,在其他编辑器中打开的result.When,如记事本,汉字显示得很好,但在Excel中不能工作。

EN

回答 1

Stack Overflow用户

发布于 2021-02-23 10:45:20

尝试使用UTF-8并在文件开始时添加\uFEFF

这是字节顺序标记用来识别UTF-8编码的文件(不仅仅是字节顺序)。

用于快速测试的代码:

代码语言:javascript
运行
复制
var writer = new FileWriter("/tmp/a.csv", StandardCharsets.UTF_8);
writer.write("\uFEFF");  // BOM
writer.write("test:,\u4E2D,ok");  // or writer.write("test:,中,ok");
writer.close();

在Excel中:

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66331230

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档