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時,中文字是按照拼音排序。
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時,中文字是按照拼音排序。
沒有留言:
張貼留言