zoukankan      html  css  js  c++  java
  • BOM 标记

    BOM Byte Order Mark 的简称,即字节序标记。用于标记文本流:

    • 表示文本流的字节顺序,是小端序(little-endian)还是大端序(big-endian;
    • 表示文本流是 Unicode 字符;
    • 表示文本流的编码方式。

     

    几种编码方式的 BOM :

    • UTF-80xEFBBBF
    • UTF-16BE):0xFEFF
    • UTF-16LE):0xFFFE
    • UTF-32BE):0x0000FEFF
    • UTF-32LE):0xFFFE0000

     

    .NET 中的字符串内部表示统一是 UTF-8 编码。写入文件时,默认也是 UTF-8 编码。.NET 可以生成两种 UTF-8 编码的文本文件:带 BOM 与不带 BOM,默认为生成不带 BOM 的文件。

     

    // 生成不带 BOM 的文件

    StreamWriter sw = new StreamWriter(file);

     

    // 生成带 BOM 的文件

    StreamWriter sw = new StreamWriter(file, true, Encoding.GetEncoding("UTF-8"));

     

    OfficeWord, Excel, PowerPoint)、记事本(NotePad)等读取带有 BOM 标记的 UTF-8 编码的文件时,没有问题,但读取不带 BOM UTF-8 文件时,有时能够正确解析,一般情况下都不能正确解析,从而造成显示乱码。所以,要生成供 Office 读取的 UTF-8 文件时,一定要带有 BOM 标记。

     

    下面的代码用于生成客户端下载的文件(data.xls):

     

     

     

    其中,ExcelExport(file, col, style) 生成带 BOM 标记的 UTF-8 文件,context.Response.WriteFile(file) 将文件内容写入输出流(带有 BOM 标记)。这样,客户端下载的 data.xls 文件即是带有 BOM 标记的 UTF-8 编码的文件。

     

     

  • 相关阅读:
    PHP获取当前页面完整url地址,包括参数的函数
    研究在SAE上搭建最新wordpress
    CentOS6.5 编译安装lnmp环境
    cried me a river--kristinia debarge
    Bad Day -- Daniel Powter
    Back to December -- Taylor Swift
    英语单词的偏旁部首之常见前缀(一)
    21 Guns -- Green Day
    影子
    BNUOJ 1037 精神控制
  • 原文地址:https://www.cnblogs.com/prowyh/p/4977775.html
Copyright © 2011-2022 走看看