我们买了个web表格控件, 点击表头可以排序的, 对于英文没问题, 是按照英文字母顺序排的, 但是中文就乱了. 不按拼音顺序, 也不按笔画顺序.
后来在网上找了一下, 发现Javascript的sort方法对于中文是按照内码来排的.
如果想让其按拼音来排, 需要用localCompare
原始顺序是: 猪zhu-1,我wo-2,啊a-3,你ni-4,他ta-5,地di-6
Javascript本身的sort排序后是: 他ta-5,你ni-4,啊a-3,地di-6,我wo-2,猪zhu-1
按照拼音排序结果是: 啊a-3,地di-6,你ni-4,他ta-5,我wo-2,猪zhu-1
具体请看代码
HTML+Cheetah语言: Javascript 排序问题
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>
<html xmlns=“http://www.w3.org/1999/xhtml”>
<head>
<meta http-equiv=“Content-Type” content=“text/html; charset=utf-8″ />
<title>Sort Test</title>
</head>
<html xmlns=“http://www.w3.org/1999/xhtml”>
<head>
<meta http-equiv=“Content-Type” content=“text/html; charset=utf-8″ />
<title>Sort Test</title>
</head>
<body>
<script type=“text/javascript”>
function mysort()
{
var s = “猪zhu-1,我wo-2,啊a-3,你ni-4,他ta-5,地di-6″;
alert(“The original is:\n” + s);
var a = s.split(“,”);
a.sort();
alert(“This is wrong:\n” + a);
a.sort(function(c1, c2)
{
return c1.localeCompare(c2);
});
alert(“This is right:\n” + a);
}
</script>
<input type=“button” value=“test” onclick=“mysort()” />
</body>
</html>


2 Comments
后来我终于发现为什么wordpress贴代码缩进会出问题了
因为wordpress自带的编辑器是tinyMCE,其可视化编辑模式在firefox下有“吃掉空格”的bug
直接贴html代码或者在IE下用可视化编辑器都没事…
[Reply]
我重新贴了一下代码, 现在好了.
我原来也是在html里直接贴的代码, 估计后来文章被我在可视化编辑器里编辑过, 所以空格没了.
[Reply]