Txt格式配置表无法解析的问题——BOM

  今天再次遇到同一个问题:策划给来一个Txt格式配置表,我用解析类去读取,返回的结果为空。解析类参数是:主键key,文件名fileName,错误提示errorTip

  写读取语句的时候,主键key我是直接从txt文件中复制出来,它是txt文件的第一个字符串,文件名fileName也是直接复制文件名。

  由于已经不是第一次遇到,这次决定不能再视而不见。

  首先在解析类里打印,发现其他配置表都正常,就是这个读取语句中打印出来的key,看起来一模一样,但是就是无法被识别为与程序读取到的key是相等的,想起上次看博客时提到微软的记事本会在文件里加标记符号,于是删除key再手打,发现依然如故。

  回到读取语句,发现删除直接复制过来的key字符串时,删除完key内容之后,想要继续删除包含该key的“符号时,光标依然在原处,这才发现“符号后有一个看不见的字符。于是google Txt文件头的相关资料,了解到:文本文件编码时,会在文件头添加字节顺序标记(Byte Order Mark), 用于标识文件是采用那种格式的编码。一般的文本编辑器是看不见这个标记的(实测Vim可以看见),由于与文件头相连,所以直接复制文本文件开头的字符串时会把这个标记一起复制。最后导致文本解析类判定读取语句给的key参数(包含BOM)与解析类中文本读取方法所读取到的key不一致。

  解决办法:下次写读取文本语句时,莫偷懒直接复制,自己手动敲即可。或者复制过来的时候,光标跳到string头部删除一次不可见的BOM

PS:如何生成无BOM的文本文件:

  1notepad++ 格式栏有转换为无BOM格式的选项。

  2Vim打开文件可以看到BOM文件头删除即可。

posted @ 2015-10-28 21:35  庐望  阅读(516)  评论(0编辑  收藏  举报