Office Open XML 中的默认编码是UTF-8
。所以Unicode已经成为可能。尽管如此,微软还是定义了:ECMA-376 第 1 部分 22.4 变体类型 22.4.2.4 bstr(基本字符串):
22.4.2.4 bstr(基本字符串)
该元素定义了一个二进制基本字符串变体类型,它可以存储任何有效的 Unicode 字符。无法在 XML 中直接表示为的 Unicode 字符
由 XML 1.0 规范定义,应使用转义
Unicode 数字字符表示转义字符格式_xHHHH_
,其中 H 表示字符值中的十六进制字符。 [示例:XML 中不允许使用 Unicode 字符 8
1.0 文档,因此应转义为_x0008_
。结束示例] 要存储转义序列的文字形式,初始下划线应
本身被转义(即存储为_x005F_
)。 [示例:字符串
文字_x0008_
将被存储为_x005F_x0008_
。结束示例]
这
该元素的可能值由 W3C XML 架构定义
字符串数据类型。
这扩展了 W3C XML Schema 字符串数据类型。这样字符序列_xHHHH_
作为一种实体确实有特殊的含义&#xHHHH;
。这意味着每个需要解析 Office Open XML 的人(*.xlsx
, *.docx
, *.pptx
)在解析时必须牢记这一点。例如,如果你把"Text _x1234_ text"
进入一个Excel
细胞,那么Excel
是否将其存储为"Text _x005F_x1234_ text"
在 XML 中。因此,存储在文件中的字符串与输入的字符串不同,也与输入的字符串不同。Excel
将显示在单元格中。例如,如果你把"Text _x1234_ text"
作为字符串单元格内容写入 XML,然后Excel
将显示"Text ሴ text"
进入细胞。
See: Apache POI 中的 XSSFCell 将某些字符序列编码为 unicode 字符
我很清楚,XML 1.0 确实有一些无法直接在 XML 中表示的字符。但这是控制字符,XML 的其他用户无需此类扩展即可满足这些限制。如果需要包含控制字符的内容,他们会使用其他正确定义的编码(例如 Base64)。
所以我总是不寻找一些有用的用例_xHHHH_
在一个字符串内。
问题:
有人可以告诉我为什么这个特殊的 Unicode 数字字符表示转义字符格式_xHHHH_
在 Office 中 Open XML 是否有必要?
有人可以为此提供任何有用的用例吗_xHHHH_
在字符串内?
作为一个用例,我们的所有数据库都是隔离的,我们需要在不同的数据库上测试一些作业/crons/web服务,现在我们需要在Excel中导出一些数据并作为另一个数据库的输入文件提供给作业检查它是否按预期工作。由于某些权限限制,我们的架构需要这样做。
希望这对您有用:)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)