//字符集/代码页 import win.ui; /*DSG{{*/ var winform = win.form(text="字符集/代码页 查询工具";right=685;bottom=594) winform.add( btnIOpenMultiLanguage2Example={cls="plus";text="怪异编码转换范例";left=259;top=546;right=405;bottom=570;align="right";color=8388608;db=1;dr=1;font=LOGFONT(h=-13);notify=1;textPadding={left=5};z=7}; btnOpenExample={cls="plus";text="打开转换编码范例";left=115;top=546;right=259;bottom=570;align="right";color=8388608;db=1;dr=1;font=LOGFONT(h=-13);notify=1;textPadding={left=5};z=6}; btnSearch={cls="button";text="查找";left=563;top=545;right=626;bottom=574;db=1;dr=1;z=5}; edit={cls="edit";left=-377;top=339;right=43;bottom=629;autohscroll=false;db=1;dl=1;edge=1;multiline=1;vscroll=1;z=3}; editKeyword={cls="edit";text="utf8";left=420;top=545;right=555;bottom=571;db=1;dr=1;edge=1;z=4}; listview={cls="listview";left=20;top=36;right=654;bottom=530;acceptfiles=1;bgcolor=16777215;db=1;dl=1;dr=1;dt=1;edge=1;fullRow=1;gridLines=1;msel=false;z=1}; static={cls="static";text="请使用鼠标左键、鼠标右键点击列表项";left=37;top=10;right=647;bottom=28;dl=1;dr=1;dt=1;transparent=1;z=2} ) /*}}*/ winform.listview.insertColumn("",1); winform.listview.insertColumn("字符集(Charset)",200,,0x1/*_LVCFMT_RIGHT*/); winform.listview.insertColumn("代码页(CodePage)",120,,0x0/*_LVCFMT_LEFT*/); winform.listview.insertColumn("说明",200,,0x0/*_LVCFMT_LEFT*/); import win.reg; import string.encoding; import com.interface.IMultiLanguage2; var multiLanguage = com.interface.IMultiLanguage2.Create(); for( cpInfo in multiLanguage.eachCodepage() ){ winform.listview.addItem( { ""; cpInfo.webCharset; cpInfo.uiCodePage; cpInfo.description } ); } winform.btnSearch.oncommand = function(id,event){ var keyword = winform.editKeyword.text; var items = winform.listview.items; for(i,item in items){ if( item[3] == keyword ){ winform.listview.selIndex = i; winform.listview.ensureVisible(); winform.listview.setFocus(); return; } } for(i,item in items){ if( string.cmp(item[2] , keyword) == 0 ){ winform.listview.selIndex = i; winform.listview.ensureVisible() return; } } import console for(i,item in items){ if( string.cmp( string.replace(item[2],"\p","") , string.replace(keyword,"\p",""), ) == 0 ){ winform.listview.selIndex = i; winform.listview.ensureVisible(); winform.listview.setFocus(); return; } } for(i,item in items){ if( string.indexOf(item[2] , keyword) ){ winform.listview.selIndex = i; winform.listview.ensureVisible(); winform.listview.setFocus(); return; } } for(i,item in items){ if( string.find(item[4] , "<@@" +keyword + "@>") ){ winform.listview.selIndex = i; winform.listview.ensureVisible(); winform.listview.setFocus(); return; } } } winform.isDialogMessage = function(hwnd,msg){ if( msg.wParam == 0xD/*_VK_RETURN*/ ){ if( msg.message == 0x100/*_WM_KEYDOWN*/) winform.btnSearch.oncommand(); return true; } return win.isDialogMessage(hwnd,msg); } winform.edit.text = /* aardio 字符串的默认编码为 UTF-8 ,对应的 Codepage 为 65001 ,aardio 中的 UTF-16 字符串(ustring) 使用 UTF-16 编码,对应的 Codepage 为 1200。 非 Uniocde 编码一般称为 ANSI 编码,简体中文 GBK 编码的 Codepage 为 936 ,而繁体中文 Big5 的编码为 950,Codepage 指定为 0 用于表示系统默认的 ANSI 编码(在简体中文系统上就相当于 936) 在 aardio 中转换编码使用 string.fromto 函数,这个函数通过指定输入输出 Codepage 把字符串从一种编码转换为另一种编码,例如 str = string.fromto(str,65001,0) 就把 UTF8 编码的字符串转换为了系统 ANSI 编码。 */ winform.edit.orphanWindow(); import win.clip; import win.ui.menu; import JSON; winform.listview.onnotify = function(id,code,ptr){ select(code) { case 0xFFFFFF9B/*_LVN_ITEMCHANGED*/{ var row = winform.listview.selIndex; if(row){ winform.static.text = "选中了:'" + winform.listview.getItemText(row,2) + "' 请使用右键菜单复制"; var cp = winform.listview.getItemText(row,3); var charsetInfo = multiLanguage.getCodePageInfo(tonumber(cp)); winform.edit.text = JSON.stringify(charsetInfo,true); } } case 0xFFFFFFFE/*_NM_CLICK*/{ var row,col = winform.listview.hitTest(); winform.static.text = "选中了:'" + winform.listview.getItemText(row,col) + "' 请使用右键菜单复制" } case 0xFFFFFFFB/*_NM_RCLICK*/ { var row,col = winform.listview.hitTest(); var itemText = winform.listview.getItemText(row,col); winform.popmenu = win.ui.popmenu(winform);//创建弹出菜单 winform.popmenu.add('复制:\'' + itemText + "'",function(id){ win.clip.write( itemText ); }); winform.popmenu.popup();//弹出菜单 } } } //自适应列宽度 winform.listview.adjust = function(cx,cy){ winform.listview.fillParent(4); } winform.btnOpenExample.skin({ color={ active=0xFF00FF00; default=0xFF000080; disabled=0xFF6D6D6D; hover=0xFFFF0000 } }) winform.btnOpenExample.oncommand = function(id,event){ import ide; ide.openDocument("~/example/Text/fromto.aardio"); win.setForeground(ide.getMainHwnd()) } winform.btnIOpenMultiLanguage2Example.skin({ color={ active=0xFF00FF00; default=0xFF000080; disabled=0xFF6D6D6D; hover=0xFFFF0000 } }) winform.btnIOpenMultiLanguage2Example.oncommand = function(id,event){ import ide; ide.openDocument("~/example/Text/IMultiLanguage2.aardio"); win.setForeground(ide.getMainHwnd()) } winform.show() win.loopMessage();