<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    幸せのちから

    平凡的世界
    看似平常實崎嶇
    成如容易卻艱辛

    eXtremeComponents導出時的中文文件名問題

    ??? ??? eXtremeComponents的中文的問題,目前知道的就是導出使用中文文件名的亂碼問題,eXtremeComponents已經默認使用UTF來導出XLS,也已經給出了PDF導出的解決方案:最新eXtremeComponents包:支持 PDF中文導出
    ??? ???? 網友seno指出可以參照SpringSide的解決方案,對文件名進行toUtf8編碼。不過,在我自己實際應用中,我的一個應用根本不需要進行任何形式的修正就能正確地生成正確的文件名輸出,如果我在eXtremeComponents添加了toUtf8導出的文件名反而亂碼。所以現在的問題是我什么時候需要對文件名進行toUtf8編碼?這是這段時間一直困擾我的問題,在網友冷月宮主和MagicYang的幫助,昨天經過一整天的查找測試找到了一個暫時看來令我比較滿意的解決方案(暫時沒有CheckIn): 我對得到的文件名字符串使用jchardet(http://jchardet.sourceforge.net/)進行編碼檢測,如果檢測編碼是ASCII碼則直接返回原字符串,否則的話是用SpringSide提供的toUtf8方法(比我原來的簡潔有效)對字符串進行編碼后再返回新的字符串。對應的代碼如下:
    ????
    /*
    ?*?Copyright?2004?original?author?or?authors.
    ?*
    ?*?Licensed?under?the?Apache?License,?Version?2.0?(the?"License");
    ?*?you?may?not?use?this?file?except?in?compliance?with?the?License.
    ?*?You?may?obtain?a?copy?of?the?License?at
    ?*
    ?*????
    http://www.apache.org/licenses/LICENSE-2.0
    ?*
    ?*?Unless?required?by?applicable?law?or?agreed?to?in?writing,?software
    ?*?distributed?under?the?License?is?distributed?on?an?"AS?IS"?BASIS,
    ?*?WITHOUT?WARRANTIES?OR?CONDITIONS?OF?ANY?KIND,?either?express?or?implied.
    ?*?See?the?License?for?the?specific?language?governing?permissions?and
    ?*?limitations?under?the?License.
    ?
    */
    package?org.extremecomponents.table.filter;

    import?org.apache.commons.lang.StringUtils;
    import?org.apache.commons.logging.Log;
    import?org.apache.commons.logging.LogFactory;
    import?org.extremecomponents.table.context.Context;
    import?org.extremecomponents.table.core.TableConstants;
    import?org.mozilla.intl.chardet.nsDetector;
    import?org.mozilla.intl.chardet.nsICharsetDetectionObserver;
    import?org.mozilla.intl.chardet.nsPSMDetector;

    /**
    ?*?
    @author?Jeff?Johnston
    ?
    */
    public?final?class?ExportFilterUtils?{
    ????
    private?static?Log?logger?=?LogFactory.getLog(ExportFilterUtils.class);
    ????
    public?static?boolean?found?=?false;

    ????
    private?ExportFilterUtils()?{
    ????}

    ????
    public?static?boolean?isExported(Context?context)?{
    ????????
    return?StringUtils.isNotBlank(getTableId(context));
    ????}

    ????
    public?static?String?getExportFileName(Context?context)?{

    ????????String?tableId?
    =?getTableId(context);

    ????????
    if?(StringUtils.isNotBlank(tableId))?{
    ????????????String?exportFileNameStr?
    =?tableId?+?"_"?+?TableConstants.EXPORT_FILE_NAME;
    ????????????String?exportFileName?
    =?verifyEncoding(context.getParameter(exportFileNameStr));

    ????????????
    if?(logger.isDebugEnabled())?{
    ????????????????logger.debug(
    "eXtremeTable?export?file?name?["?+?exportFileNameStr?+?"]?is?["?+?exportFileName?+?"]");
    ????????????}

    ????????????
    return?exportFileName;
    ????????}

    ????????
    return?null;
    ????}

    ????
    private?static?String?verifyEncoding(String?exportFileName)?{
    ????????nsDetector?det?
    =?new?nsDetector(nsPSMDetector.ALL);
    ????????det.Init(
    new?nsICharsetDetectionObserver()?{
    ????????????
    public?void?Notify(String?charset)?{
    ????????????????ExportFilterUtils.found?
    =?true;
    ????????????}
    ????????});

    ????????
    boolean?done?=?false;
    ????????
    boolean?isAscii?=?true;
    ????????
    byte[]?buf?=?exportFileName.getBytes();
    ????????
    for?(int?i?=?0;?i?<?buf.length;?i++)?{
    ????????????
    if?(isAscii)
    ????????????????isAscii?
    =?det.isAscii(buf,?i);
    ????????????
    if?(!isAscii?&&?!done)
    ????????????????done?
    =?det.DoIt(buf,?i,?false);
    ????????}
    ????????det.DataEnd();

    ????????
    if?(isAscii)?{
    ????????????
    return?exportFileName;
    ????????}
    ????????
    return?toUtf8(exportFileName);

    ????}

    ????
    public?static?String?toUtf8(String?src)?{
    ????????
    byte[]?b?=?src.getBytes();
    ????????
    char[]?c?=?new?char[b.length];
    ????????
    for?(int?i?=?0;?i?<?b.length;?i++)?{
    ????????????c[i]?
    =?(char)?(b[i]?&?0x00FF);
    ????????}
    ????????
    return?new?String(c);
    ????}

    ????
    /**
    ?????*?There?can?only?be?one?table?instance?(tableId)?per?form.?If?the?instance
    ?????*?variable?exists?that?means?there?is?an?export?being?done.
    ?????*
    ?????*?
    @param?context
    ?????*?
    @return
    ?????
    */
    ????
    public?static?String?getTableId(Context?context)?{
    ????????
    return?context.getParameter(TableConstants.EXPORT_TABLE_ID);
    ????}
    }
    ????? 經過我們三個人測試是成功的。歡迎大家幫助測試。大家如果有任何意見、建議可與我聯系: xplucky@gmail.com
    ????? 壓縮文件只包含: eXtremeComponents.jar eXtremeComponents.tld 和 jchardet.jar
    ?????? eXtremeComponents.rar??

    posted on 2006-04-08 18:03 Lucky 閱讀(3014) 評論(14)  編輯  收藏 所屬分類: extremeComponents

    評論

    # re: eXtremeComponents導出時的中文文件名問題 2006-04-08 21:07 江南白衣

    期望能盡快將此特性改進核心版本里,springside就可以去掉對et的擴展了:)  回復  更多評論   

    # re: eXtremeComponents導出時的中文文件名問題 2006-04-09 14:58 xplucky

    我也想在eXtremeComponents正式發布之前將此特性納入核心版本,所以希望大家能幫助測試一下,看看會不會有別的暫時還沒有想到的問題。  回復  更多評論   

    # re: eXtremeComponents導出時的中文文件名問題 2006-04-11 12:43 Ivan Chen

    這里有必要搞一個自己的toUtf8方法嗎?直接用URLEncoder.encode也可以啊。  回復  更多評論   

    # re: eXtremeComponents導出時的中文文件名問題 2006-04-11 12:53 xplucky

    @Ivan Chen
    呵呵,如果你能給我一個示例的話那會更好。
      回復  更多評論   

    # re: eXtremeComponents導出時的中文文件名問題 2006-11-08 16:30 dodo

    請問如何用eXtremeComponents實現點擊表頭,按中文拼音排序的功能?  回復  更多評論   

    # re: eXtremeComponents導出時的中文文件名問題 2006-11-09 11:46 yaolin

    我只是把ExportFilterUtils中的

    exportFileName = context.getParameter(exportFileNameStr);

    改成:

    try {
    exportFileName = URLEncoder.encode(context
    .getParameter(exportFileNameStr), DEFAULT_ENCODING);
    } catch (UnsupportedEncodingException e) {
    exportFileName = context.getParameter(exportFileNameStr);
    logger.error(e);
    }

    就好用了。  回復  更多評論   

    # re: eXtremeComponents導出時的中文文件名問題 2006-11-09 12:09 yaolin

    哦,補充一句,那個DEFAULT_ENCODING實在開頭定義的:

    private static final String DEFAULT_ENCODING = "UTF-8";  回復  更多評論   

    # re: eXtremeComponents導出時的中文文件名問題 2006-11-23 17:40

    我測試不行嗎,“業務室名稱”文件名變成CA4H2V41  回復  更多評論   

    # re: eXtremeComponents導出時的中文文件名問題 2006-11-23 17:53

    兩位,怎么偶試都不行呢

      回復  更多評論   

    # 無法導出xls文件 2007-06-01 15:42 sweetleaf

    我在appfuse中,試著使用eXtremeComponents的標簽庫,test.jsp頁面能正常顯示,但是加入<ec:exportXls
    fileName="dd.xls"
    tooltip="Export Excel"
    text="XLS"
    />后,點擊導出xls的圖標,頁面跳轉到一個空頁面,名稱也為test.jsp,無任何內容顯示,請問,這是怎么回事?
      回復  更多評論   

    # re: eXtremeComponents導出時的中文文件名問題 2007-06-29 18:44 peterwillcn

    @sweetleaf
    需要在web.xml文件中加入eXtremeComponents的導出過濾器的配置,內容如下:

    <filter> <filter-name>eXtremeExport</filter-name> <filter-class>org.extremecomponents.table.filter.ExportFilter</filter-class> <init-param> <param-name>responseHeadersSetBeforeDoFilter</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>eXtremeExport</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
    這樣篩選功能就變成亂碼了  回復  更多評論   

    # re: eXtremeComponents導出時的中文文件名問題 2009-01-06 17:30 Ivan Chen(西濱)

    toUtf8在ie7下出錯。  回復  更多評論   

    # re: eXtremeComponents導出時的中文文件名問題 2009-05-13 20:01 jti

    導出excel時,數據列長度過長,導致顯示為 科學技術法,請問如何解決這種問題?  回復  更多評論   

    # re: eXtremeComponents導出時的中文文件名問題 2009-05-14 00:05 Lucky

    這個項目已經快3年沒有維護了,建議你看看GT-grid http://ecside.group.javaeye.com/  回復  更多評論   

    <2006年4月>
    2627282930311
    2345678
    9101112131415
    16171819202122
    23242526272829
    30123456

    導航

    隨筆分類(125)

    文章分類(5)

    日本語

    搜索

    積分與排名

    最新隨筆

    最新評論

    主站蜘蛛池模板: 亚洲熟妇少妇任你躁在线观看无码| 国产又大又长又粗又硬的免费视频| 亚洲视频一区调教| 亚洲欧洲日产韩国在线| 国产免费一区二区视频| 亚洲va久久久噜噜噜久久天堂| 日本三级在线观看免费| 亚洲成a人片在线观看无码| 亚洲a一级免费视频| 亚洲一二成人精品区| 69av免费视频| 亚洲熟女综合一区二区三区 | 亚洲国产日韩在线人成下载| 免费播放一区二区三区| 亚洲日韩乱码久久久久久| 久久笫一福利免费导航| 亚洲狠狠婷婷综合久久蜜芽| 日韩精品免费一区二区三区| 日韩在线观看免费| 免费看a级黄色片| 午夜亚洲国产精品福利| 我想看一级毛片免费的| 99久久亚洲综合精品成人网| 国产在线a免费观看| 欧洲亚洲综合一区二区三区 | 国产成人亚洲合集青青草原精品| 波多野结衣免费在线观看| 亚洲精品精华液一区二区| 精品国产亚洲一区二区在线观看| 伊人久久免费视频| 亚洲精品成a人在线观看夫| 亚洲中文字幕无码中文字在线| 午夜免费福利片观看| 亚洲中文字幕久久久一区| 中文字幕亚洲日韩无线码| 91久久成人免费| 美女羞羞视频免费网站| 国产免费看插插插视频| 男人都懂www深夜免费网站| 亚洲码欧美码一区二区三区| 亚洲最大AV网站在线观看|