如何在XML中的xsd:base64Binary字段中编码日文字符

时间:2017-08-17 20:07:34

标签: xml unicode encoding character-encoding base64

我正在尝试撰写一个将被发送到某个目标系统的XML文档。 (没有特定的系统,我只是试图实现消息传递标准。)文档模式将特定字段的类型赋予xsd:base64Binary。没问题,我只是在序列化时对字段的内容进行base64编码。但是,如果该字段的原始值包含Unicode字符,该怎么办?就我而言,我处理的是日文字符。

我使用的编程语言在内部用Unicode值表示这些字符。例如:

  

"た" (HIRAGANA LETTER TA)= 0x305F。

所以在我对base64进行base64编码之前,我需要一种方法将它从双宽字节转换为一系列单宽字节。我想到了UTF-8编码,因此值将变为:

  

0xE3 0x81 0x9F

这个base64编码为:

  

44Gf

所以大概是我文件中的内容。这只是一个皱纹。接收XML文档的系统必须知道"不知何故,该字段的base64解码值是UTF-8编码的。我无法在消息格式的标准中找到任何内容,即一旦字段的值被base64解码,结果值就是UTF-8(或任何其他格式)编码。我希望在这个场景中正确的事情在XML规范中有所描述,但我还没有找到任何确定的东西。

我想到的一个想法是,base64解码值的字符编码可能与XML prolog中命名的字符编码相同,例如:

  

<?xml version =" 1.0"编码=" UTF-8" ?>

因此,如果我的XML文档有这个,那么接收系统应该知道一旦有问题的字段被base64解码,它仍然是UTF-8编码的吗?

0 个答案:

没有答案