将UTF-8 BOM添加到outputStream会导致最后一个字符不能在java中打印

时间:2010-10-19 01:24:30

标签: java utf-8

我有这段代码将BOM UTF-8添加到输出流。我需要添加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);
        }

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

任何想法为什么?

1 个答案:

答案 0 :(得分:4)

考虑到BOM,不会将长度增加3吗?