如何预防或检测文本中的char(0)空字符?FileMaker解决方案求助
FileMaker中char(0)空字符检测bug的规避方案
在复制粘贴这类操作场景下,文本字段末尾经常会混入char(0)(也就是nul空字符)。这个字符在界面上完全看不到,但导出数据的时候就会被检测出来。试了用Position(text_field, char(0), 1, 1)检测,哪怕字段里确实有这个空字符,返回值也一直是0,这是FileMaker的一个已知bug。
下面是几个可行的规避方法:
- 长度对比法:char(0)会占用字符长度,但常规的文本过滤不会统计它。可以用
Length(text_field)和Length(Filter(text_field, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()_+-=[]{}|;':\",./<>? "))做对比,如果前者数值更大,就说明字段里存在包括char(0)在内的不可见字符。 - 替换验证法:直接尝试把char(0)替换为空,然后对比原字段和替换后的内容是否一致。用公式
text_field ≠ Substitute(text_field, char(0), ""),如果结果为真,就证明字段里有这个空字符。 - CSS编码暴露法:
GetAsCSS(text_field)会把不可见字符转换成可见的CSS编码,比如char(0)会变成\0000。可以用Position(GetAsCSS(text_field), "\0000", 1, 1) > 0来检测是否存在目标字符。 - 脚本自动清理:给字段设置
OnObjectSave触发脚本,在字段保存时自动执行清理:Set Field [ 表名::文本字段 ; Substitute(表名::文本字段; char(0); "") ],从源头把char(0)去掉。
内容的提问来源于stack exchange,提问作者joanolo
相关产品推荐
相关产品推荐

