EDI十六进制字符问题

时间:2014-02-05 19:41:52

标签: java hex filemaker

因此我们从Filemaker Pro数据库导出记录并通过EDI将这些文件提交给我们的供应商,但他们的系统无法接受我们的文件,因为一些非常不稳定的“..”(Hex 0B)字符显示在文本文档中每一个新行的开头。

我已经读过Filemaker Pro如何导出文件存在问题,因此无法事先删除这些Hex 0B字符from within Filemaker。我对Java的理解有限,是否有足够的基于Java的运行时解决方案可以创建来解决这个问题?

我尝试在每个可用的导出方法中导出有问题的文本文件,包括.mer,.csv,.tab等,每种输出文件字符集的每种组合都可用于每种导出类型,有些会产生更多问题隐藏的字符。我最终解决了.tab(ASCII [DOS]),因为它具有最少的剩余信息,但我仍然需要摆脱这些0B字符,以便我们的EDI集成合作伙伴能够毫无问题地接受我们的文件。

编辑:为了清晰起见,添加了更多信息。

1 个答案:

答案 0 :(得分:0)

ascii中的十六进制值“0B”是一个垂直制表符。

This chart是确定特定ascii值的十六进制值的一个很好的参考点,反之亦然。

从文本字段中取出垂直制表符有点刺激但可行。我必须为我们作为文本导入到filemaker中的一系列文档执行此操作,然后将其移至postgresql数据库。我做的是以下内容:

  • 下载免费应用程序Hex Fiend(此应用程序允许您输入文本并查看其十六进制值或十六进制,并查看其等效文本)
  • 在Hex Fiend(十六进制侧)的左侧面板中输入值0B
  • 单击Hex Fiend的右侧面板(文本侧),然后单击菜单命令编辑 - >选择全部以选择文本方面的全部内容,然后选择编辑 - >复制将内容(垂直制表符文本字符)复制到剪贴板
  • 在FileMaker中,使用脚本步骤创建脚本:

    Set Field[myTable::myField ; Substitute ( myTable::myField ; "*pasteVerticalTabCharacterHere*" ; "" )]

  • 将垂直制表符粘贴在替代函数

    的第一组引号之间
    • 请注意,执行此操作时,替换功能可能会分为两行
  • 将第二组引号保留在替代功能空白

当您在myfield中包含垂直标签的记录上触发此脚本时,它会将其替换为空白字符串""。您还可以更改替换功能,以使用回车符切换垂直标签:

Set Field[myTable::myField ; Substitute ( myTable::myField ; "*pasteVerticalTabCharacterHere*" ; ¶ )]

如果您有许多需要此设置字段步骤的记录,您可以创建一个循环遍历所有记录的脚本并触发此步骤。

你也可以快速而肮脏的方式:

  • 显示所有需要清理的记录
  • 点击要清理的字段
  • 从“记录”菜单中选择Replace Field Contents
  • 输入上面的替代计算作为替换计算
  • 点击替换

这样可以一次性清除所有记录中的垂直标签。

最后,如果您有一个或多个特定字段,您知道其中可能会有垂直标签,我建议对包含上述替代计算的修改版本的字段进行自动输入计算:

Substitute ( Self ; "*pasteVerticalTabCharacterHere*" ; "" )

这样,无论何时将记录导入包含垂直选项卡的表中,都会自动清除垂直制表符。

我还应该注意hexfiend是一个mac应用程序。我想在Windows计算机上你可以按control+K键输出垂直制表符,但我还没试过。

希望这有帮助!