今天坑人的主角是Electron(2.x),里面string.localeCompare,效果和chrome不一样
"啊".localeCompare("参"),chrome里返回值是-1,是按拼音排序的。Electron里返回1,估计是按部首排序?这里已经猜到可能和字符编码有关,如果在Electron下面 "啊".localeCompare("参", "zh-CN"),那得到的结果也是-1,即拼音排序。现在要做一个扫描文件夹下面的文件,按名字排序的东西,于是就遇到了坑
[a,b,c,啊,参],五个文件,windows下排序结果是[a,b,c,啊,参],Electron下面排序结果是[a,b,c,参,啊]。这个时候我换成localeCompare(,"zh-CN"),中文排序会正确,但是所有中文会排到英文之前,如下[啊,参,a,b,c]
C++的代码,默认的字符编码就是拼音排序的那一套,unicode,应该是GBK字符集?从来没被locale相关的问题给坑过,放弃了