最近在项目开发过程中遇到一个编码上的问题,原流程是用户上传csv数据并对数据入库。我们不知道用户会使用哪种编码的格式进行文件上传,而直接规定用户必须使用固定编码进行上传又感觉不够友好。所以需要我们程序要能识别出来文件的编码格式,并进行相应的处理。
我们日常用到的编码格式大体就那么几种,最常见的有UTF-8(带BOM)、UTF-8无BOM、GBK。其中UTF-8(带BOM)的最好区分,从文件头拿三个字符就能判断出来,这里不做过多说明。重点是UTF-8无BOM和GBK格式的区分。怎么区分从网上可以查到一些资料,我使用的是通过UTF-8的编码规则进行判断。读取字节,如果不符UTF-8规则,立马返回,判断出结果。如果相符,则继续判断,有可能会一直持续到文件最后才能出结果。如果全是单字节的话,就无所谓是UTF-8还是GBK,都可以解析出来。
下面我来分享我封装的工具类,有问题的话,欢迎留言。
讨论话题:
想法&创意
城市:
成都