是的,我这个笨蛋竟然花了两天的时间,搞定了这么一件小事。不过事后的成就感油然而生,记录2021.8.28-2021.8.29这一个有意义的周末

前言

首先,我是从4.4.5版本导出的商品列表csv,直接导入到4.4.8版本提示csv格式错误,这倒是个小问题。因为我用4.4.8版本导出了一份商品列表,对比了一下,发现4.4.8版本的csv文件取消了第一列商品ID,只需要删除这一列,模板就和老版一样了。于是我讲csv文件用WPS打开,Command+减号删除了这一列,Command+S保存,并且导入,这次没有提示“CSV文件格式错误”,成功导入了,但这也算是我这个菜鸡噩梦的开始……

CSV格式文件编码问题导致乱码的完整修复思想

WPS直接保存的CSV文件导入系统后,后台商品列表直接汉字乱码了;我第一时间意识到这是编码的问题,现在站在上帝视角,我是可以脱口而出如何解决了,不过还是回顾一下当时钻牛角尖的过程:

  • 首先我尝试了WPS直接编辑后保存,导入后乱码(这个之前说过)
  • 然后我尝试了新建一个表格文档,通过数据导入数据选择CSV文件,导入后编辑,编辑后选择另存为CSV逗号文件,依然乱码
  • 一个刚导出的,热乎的下载文件,我自己空格预览,汉字部门是乱码,而WPS打开,汉字是正常了。这让我产生了一个疯狂的想法,何不负负得正。于是我在导入数据的时候挨着选了一遍编码格式,一一对比,直到看到一个编码下的汉字乱码和预览中的乱码很像,我编辑了这个满是乱码的文档,保存,导入,结果不出意外,乱码。
  • 我开始在搜索引擎上大量搜索CSV文件编辑器,CSV无损编辑器等关键词,并下载了四五个MAC端和WIN端的软件使用测试,结果是一个能打的都没有
  • 我终于开始测试这一步,用Brackets打开了csv文件,汉字显示是正常了,然后我只保留了两行数据,一行标题头一行数据,手工删除的每行第一个逗号和他之前的字符。保存,上传,导入。这次是完好无损的,既没有上传报错,传上去的汉字也是没有乱码的。有一点高兴。
  • 不过发愁的事又来了,我总不能一行一行删前几个字吧,这几百行呢,我又在搜索引擎上搜索“代码编辑器一键删除每行的前几个字符”等关键词,无果。
  • 迷雾渐渐拨开,现在的我才明白了这件事的一个核心逻辑:下载的原始文件是什么编码的,就应该在这个编码基础上编辑,再保存为这个编码。由于WPS,Office都没有导出csv格式时高级选项选择编码格式的功能,我下载了apple装×三剑客之一Numbers,果然,他有这个功能。我按照这个逻辑操作了一通。保存,上传,失败,全是乱码
  • 问题出在哪里呢?其实是因为numbers打开这个文件时显示的就是汉字乱码,你编辑乱码后导出即使编码正确,软件也只能读取到乱码的信息,乱上加乱。所以,此刻的破局点在于,要先让电脑的软件看懂这个文件,我想起来WPS,他就能看懂……
  • 他为什么能看懂呢?因为他很智能很体贴的在打开的那一瞬间就帮我把这个csv文件转成了UTF-8编码格式,让我神不知鬼不觉的折腾了这么久
  • 我打开win10虚拟机,下载了堪称YYDS的盘古级软件——NotePad++,打开刚下载的csv文件,编码显示为GB2312,用WPS打开、编辑、保存一下这个文件,用NotePad++打开,编码显示为UTF-8。破案了。
  • 所以应该如何具体操作?我把刚下载的GB2312文件用WPS打开、编辑、保存后,再用Numbers打开这个文件,这时候在Numbers里汉字显示是正常的,再通过Numbers导出为GB2312编码的CSV文件。文件编码经历了以下过程:GB2312UTF-8GB2312
  • 将Numbers导出的文件上传-导入,成功!!!商品列表任何汉字显示都是正常的。在我沾沾自喜的同时,我又发现了新的问题……(未完待续)