星期二, 9月 17, 2013

java 中文排序

java 基本上是美國人發明的,所以一開始對英文字母的排序一定是最好的(廢話)。

A到Z有什麼好排的? 這邊就可以顯示中華文化的可看性。

我曾經在java的comparator 實做過中文排序,可總老是看不清那規則在哪裡。

應該是big5碼吧 ? 可是現在不都在推廣utf-8 ? 用big5沒辦法國際化。

問題是,utf-8在制定的時候,有它一套的規則在,

我在中國把客戶的資料庫安裝成utf-8之後,就被要求產品名稱要用拼音做排序,問題是它不是按照筆畫順序,也不是按照拼音方試去排,

只能把客戶的需求丟在一邊,快樂的回台灣了(喂)

只能用java 做排序了,oracle那邊還找不到漂亮的解法。

實做comparator 介面,使用java.text.collator 進行比較。

public class Asc implements Comparator { public int compare(Object arg0, Object arg1) { VLG_ItemMaster m1 = (VLG_ItemMaster)arg0; VLG_ItemMaster m2 = (VLG_ItemMaster)arg1; Collator collator =  Collator.getInstance(Locale.TRADITIONAL_CHINESE); return collator.compare(m1.getItemDesc(),m2.getItemDesc()); }}

在Locale是TRADITIONAL_CHINESE時,中文字是按照筆畫排序。

在Locale是SIMPLIFIED_CHINESE時,中文字是按照拼音排序。

沒有留言: