我有这段代码将 BOM UTF-8 添加到 outputstream 。我需要添加 BOM,因为 Excel 不会隐式识别 UTF-8 编码,因此法语字符在 excel 中显示为奇怪的字符。

try {

            response.setContentType(getContentType(request, response));
            response.setContentLength(downloadData.length);
            ServletOutputStream os = response.getOutputStream();

            //Specify the BOM (Byte order Mask) for UTF-8 so that Excel can identify the encoding and open it in the correct format
            os.write(new byte[] { (byte)0xEF, (byte)0xBB, (byte)0xBF });
            os.write(downloadData);
            os.flush();
            response.flushBuffer();
        } catch (IOException e) {
            logger.error(e);
        }

但是,当我将 outputstream 输出到文件时,不会打印最后一个字符。

任何想法为什么?

最佳答案

长度不是必须增加 3 才能考虑 BOM 吗?

关于java - 向 outputStream 添加 UTF-8 BOM 会导致最后一个字符无法在 java 中打印,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3964744/

10-13 01:04