Office中的默认编码是UTF-8。所以Unicode已经成为可能。尽管如此,微软是否定义:ECMA-376第1部分22.4变体类型22.4.2.4 bstr (基本字符串)?
22.4.2.4 bstr (基本字符串) 此元素定义二进制基本字符串变体类型,它可以存储任何有效的Unicode字符。不能以XML1.0规范定义的XML直接表示的Unicode字符应使用Unicode数字字符表示转义字符格式
_xHHHH_转义,其中H表示字符值中的十六进制字符。示例:XML1.0文档中不允许使用Unicode字符8,因此应该将其转义为_x0008_。为了存储转义序列的文字形式,初始下划线本身将被转义(即存储为_x005F_)。示例:字符串文本_x0008_将存储为_x005F_x0008_。终例 此元素的可能值由W3C XML字符串数据类型定义。
这扩展了W3C XML字符串数据类型。因此,字符序列_xHHHH_作为一种实体(如&#xHHHH; ),确实具有特殊的意义。这意味着每个需要解析Office (*.xlsx、*.docx、*.pptx)的人在解析时都必须牢记这一点。例如,如果将"Text _x1234_ text"放入Excel单元中,那么Excel会将其作为"Text _x005F_x1234_ text"存储在XML中。因此,存储在文件中的字符串不同于输入的字符串,也不同于Excel将在单元格中显示的字符串。例如,如果将"Text _x1234_ text"作为字符串单元格内容放入XML中,那么Excel将在单元格中显示"Text ሴ text"。
请参阅:Apache中的XSSFCell将某些字符序列编码为unicode字符
在我看来,XML1.0确实有一些不能直接用XML表示的字符。但是这是控制字符,XML的其他用户可以在没有此类扩展的情况下满足这些限制。它们使用其他正确定义的编码(Base64表示ex.)如果内容中有控制字符是需要的。
因此,我总是不会在字符串中为这个_xHHHH_寻找一些有用的用例。
问题:
_xHHHH_都是必要的吗?_xHHHH_提供任何有用的用例吗?发布于 2018-09-06 07:25:08
作为一个用例,我们的所有DB都是作为一个需求被隔离的,我们需要在不同的DB上测试一些作业/crons/webservices,现在我们需要在excel中导出一些数据,并将其作为另一个DB的输入文件提供给作业,以检查它是否正常工作。由于某些权限限制,我们的体系结构是必需的。
希望这对你来说是个有用的案例:)
https://stackoverflow.com/questions/48315944
复制相似问题