在DATASTAGE -CIF层开发中,一般都使用“||”与空格作为格式化输出,而在EXF数据文件格式上,都是字段前后使用空格,字段之间用“||”的方式组织数据,行与行使用回车。这样做的目的是为了防止乱码的产生。
乱码的产生:电脑是以unicode的方式来读取数据的,即十六进制。也就是说,我们在电脑看到的所有我们能够理解的数据,都会被转化成十六进制后才被电脑读取。而在DS设计中,经常需要使用数据的截取,如varchar(100)的数据转为varchar(50)。在十六进制法中,是以四位为作为一个最小记录单元,即一个最小记录单位占两个字节长度。比如一个字符“A”,它会用F0D0来表示,字符串“中国”,它会用FE30 39DA来表示。电脑所说的字段长度是以字节(位)为单位,所以截取也是以字节为单位了。
这样就会出现一种情况,如果字符串中出现有空格,而空格是十六进制是00,截取的话就有可能出现乱码了。比如要把字符串“中 国”放到一个varchar(4)的字段里,由于“中”与“国”两个字已经各占了位,多了个空格就字符串“中 国”就需要经过截取才能保存到varchar(4)里面了。假设字符串“中国”的十六进制是FE30 39DA,那么加了空格后的字符串“中 国”的十六进制就成了FE30 0039 DA。截取成四位保存到varchar(4),截取后就得到了FE30 0039,于是后面的DA就会产生乱码了。
解决的办法是在字符串后面再加一个空格,即形成DA00,从而凑成一个整的最小单位,然后在使用指定的终结符号(我们使用的是“||”)作为字段的间隔符号,这样就可以防止数据截取后产生乱码了
本文介绍在DATASTAGE-CIF层开发中如何通过特定格式化输出方式避免因数据截取而导致的乱码问题。文章详细解释了十六进制数据表示下,为何在字段后添加额外空格并在字段间使用'||'符号可以有效防止乱码。
8214

被折叠的 条评论
为什么被折叠?



