代码之家  ›  专栏  ›  技术社区  ›  Canacourse

Unicode/非Unicode/UTF-8问题

  •  2
  • Canacourse  · 技术社区  · 16 年前

    在创建INI文件后,我们在记事本中检查了该文件,发现字母间距被拧紧了。经过一点研究,我们发现了Unicode字节顺序标记(BOM) FF FE

    现在问题来了——我们开始寻找INI文件解析器,而不是创建自己的解析器。Boost属性树似乎很理想,但它似乎没有被底层wifstream过滤掉BOM,最终属性树会因此抛出一个异常。

    接下来我们尝试了SimpleINI link text 但是simpleINI(CSimpleIniW)似乎不起作用,除非UTF-8标记位于文件的开头。

    到目前为止,2个看似开发良好的INI文件处理器无法与我们的简单INI文件一起工作,因此我们开始认为我们采取了错误的方法。除了显而易见的“应该使用XML”之外,在这个问题上,您可以提供什么实际建议?

    更新:

    3 回复  |  直到 16 年前
        1
  •  2
  •   ZZ Coder    16 年前

    如果您打算在INI文件中使用Unicode,则需要BOM。如果没有BOM表,读者就不知道它使用的是哪种编码。它可以是UTF-16(大/小尾端)或UTF-8格式。这是INI文件的一大缺点。XML有一个可见的前导,您可以指定编码,它更容易处理。

    如果这是一个Windows应用程序,你真的应该切换到注册表。否则,XML就是最好的选择。

        2
  •  1
  •   Dor    16 年前


    删除BOM表没有问题,这是Web开发中常见的解决方案。

        3
  •  1
  •   Rick Strahl    16 年前