标题: 解决 jsqlparser不支持中文的问题 [打印本页]
作者: admin 时间: 2010-12-9 16:57 标题: 解决 jsqlparser不支持中文的问题
今天下载了 jsqlparser,打算用在简表中,不曾想不持中文,运行以下代码,出现如下错误:复制内容到剪贴板
代码:
public static void main(String[] args) {
try {
Statement stat = new CCJSqlParserManager().parse(new StringReader("select 年份,月份,sum(金额) from 订单查询 group by 年份,月份 order by 年份,月份"));
System.out.println();
} catch (JSQLParserException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
Caused by:
net.sf.jsqlparser.parser.TokenMgrError: Lexical error at line 1, column 9. Encountered: "\u5e74" (24180), after : ""
at net.sf.jsqlparser.parser.CCJSqlParserTokenManager.getNextToken(CCJSqlParserTokenManager.java:1328)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_scan_token(CCJSqlParser.java:5244)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_140(CCJSqlParser.java:4531)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_107(CCJSqlParser.java:4568)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_65(CCJSqlParser.java:4045)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_35(CCJSqlParser.java:4145)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3_5(CCJSqlParser.java:4591)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_2_5(CCJSqlParser.java:3059)
at net.sf.jsqlparser.parser.CCJSqlParser.SelectBody(CCJSqlParser.java:562)
at net.sf.jsqlparser.parser.CCJSqlParser.Select(CCJSqlParser.java:554)
at net.sf.jsqlparser.parser.CCJSqlParser.Statement(CCJSqlParser.java:110)
at net.sf.jsqlparser.parser.CCJSqlParserManager.parse(CCJSqlParserManager.java:38)
at jatools.designer.data.DatasetPreviewer.main(DatasetPreviewer.java:231)
网上查了一圈,不得要领,后来查看JSqlParserCC.jj文件,发现id只支持以a-z,A-Z字符开始的串,为此,加上相应的unicode字符即可以了,以下粗体部分是加上去的部分,这样重新javacc一下,就可以了
如下所示
TOKEN:
{
< S_IDENTIFIER: ( <LETTER> )+ ( <DIGIT> | <LETTER> |<SPECIAL_CHARS>)* >
| < #LETTER:
["a"-"z",
"A"-"Z",
"\u0024",
"\u0041"-"\u005a",
"\u005f",
"\u0061"-"\u007a",
"\u00c0"-"\u00d6",
"\u00d8"-"\u00f6",
"\u00f8"-"\u00ff",
"\u0100"-"\u1fff",
"\u3040"-"\u318f",
"\u3300"-"\u337f",
"\u3400"-"\u3d2d",
"\u4e00"-"\u9fff",
"\uf900"-"\ufaff"] >
作者: admin 时间: 2010-12-9 17:02
这个是经过楼上方法,处理过的 jsqlparser-0.6.2。欢迎下载!
作者: sdyjmc 时间: 2011-9-22 18:04 标题: 不错,谢了,这个问题困扰我好长时间了。
不错,谢了,这个问题困扰我好长时间了。
作者: tracykun 时间: 2011-11-3 11:23 标题: 为啥我的中文还是报错
这是报错信息,能给看一下吗?
Caused by: net.sf.jsqlparser.parser.TokenMgrError: Lexical error at line 5, column 70. Encountered: "\u6570" (25968), after : "\'\u66f4\u65b0\u57fa"
at net.sf.jsqlparser.parser.CCJSqlParserTokenManager.getNextToken(CCJSqlParserTokenManager.java:1375)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_scan_token(CCJSqlParser.java:5415)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_241(CCJSqlParser.java:5140)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_217(CCJSqlParser.java:5198)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_184(CCJSqlParser.java:5210)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_134(CCJSqlParser.java:4076)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_79(CCJSqlParser.java:4209)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_44(CCJSqlParser.java:4231)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_131(CCJSqlParser.java:4479)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_76(CCJSqlParser.java:4486)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_43(CCJSqlParser.java:4558)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_239(CCJSqlParser.java:4645)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_214(CCJSqlParser.java:4657)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_207(CCJSqlParser.java:5149)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_156(CCJSqlParser.java:4585)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_116(CCJSqlParser.java:4743)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_72(CCJSqlParser.java:4337)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_38(CCJSqlParser.java:4473)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_139(CCJSqlParser.java:4813)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_92(CCJSqlParser.java:4872)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_50(CCJSqlParser.java:3468)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_112(CCJSqlParser.java:4164)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_69(CCJSqlParser.java:4389)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_58(CCJSqlParser.java:4519)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_94(CCJSqlParser.java:4650)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_57(CCJSqlParser.java:4667)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_93(CCJSqlParser.java:4860)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_54(CCJSqlParser.java:5009)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_51(CCJSqlParser.java:4924)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_136(CCJSqlParser.java:5032)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_85(CCJSqlParser.java:5076)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_219(CCJSqlParser.java:5172)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_184(CCJSqlParser.java:5214)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_134(CCJSqlParser.java:4076)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_79(CCJSqlParser.java:4209)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_44(CCJSqlParser.java:4231)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_131(CCJSqlParser.java:4479)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_76(CCJSqlParser.java:4486)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_43(CCJSqlParser.java:4558)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_239(CCJSqlParser.java:4645)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_214(CCJSqlParser.java:4657)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_207(CCJSqlParser.java:5149)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_156(CCJSqlParser.java:4585)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_116(CCJSqlParser.java:4743)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_72(CCJSqlParser.java:4337)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_38(CCJSqlParser.java:4473)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3_5(CCJSqlParser.java:4756)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_2_5(CCJSqlParser.java:3155)
at net.sf.jsqlparser.parser.CCJSqlParser.SelectBody(CCJSqlParser.java:565)
at net.sf.jsqlparser.parser.CCJSqlParser.Select(CCJSqlParser.java:557)
at net.sf.jsqlparser.parser.CCJSqlParser.Statement(CCJSqlParser.java:113)
at net.sf.jsqlparser.parser.CCJSqlParserManager.parse(CCJSqlParserManager.java:38)
... 63 more
作者: admin 时间: 2011-11-4 15:53
你一定是没替换正确,或者,老的版,仍然在起作用!
作者: 希望不流泪 时间: 2011-11-15 16:00
你们对JSQLParser的原理有了解吗?有一些函数JSQLParser不支持,我想基于JSQLParser做二次开发,让他支持一些函数,有木有实现思路或者做过的,可以讨论一下了,我的扣:34655442
欢迎光临 杰表技术论坛 (http://bbs.jatools.com/) |
Powered by Discuz! 6.1.0 |