[Seasar-user:4059] SQLファイルでUTF-8

Tetsuya Toba [E-MAIL ADDRESS DELETED]
2006年 7月 12日 (水) 18:50:33 JST


鳥羽です。

S2DAO 1.0.35 を利用していますが、いくつか問題が出ています。

1. SQLファイルをUTF-8で作成すると、正しく読み込まれません。
   テーブルは全て日本語で作成しており、またサーバの文字コードも
   UTF-8ですので、そのままUTF-8にしたいと思っています。
   文字コードを指定する方法はないでしょうか?

2. UTF-8では動かないので、暫定的に文字コードをMS932に変えて実行。
   項目名に漢字の「ID」が含まれていると、例外が発生する。

以下、スタックトレースです。

DEBUG 2006-07-12 18:42:19,940 [main] BEGIN
CodeDefineDao#getAllCodeDefines()
DEBUG 2006-07-12 18:42:20,736 [main] END CodeDefineDao#getAllCodeDefines()
Throwable:org.seasar.framework.exception.OgnlRuntimeException:
[ESSR0073]OGNLで例外が発生しました。理由はMalformed OGNL expression: コード
ID != null
org.seasar.framework.exception.OgnlRuntimeException: [ESSR0073]OGNLで例外が
発生しました。理由はMalformed OGNL expression: コードID != null
 at org.seasar.framework.util.OgnlUtil.parseExpression(OgnlUtil.java:71)
 at org.seasar.framework.util.OgnlUtil.parseExpression(OgnlUtil.java:63)
 at org.seasar.dao.node.IfNode.<init>(IfNode.java:36)
 at org.seasar.dao.parser.SqlParserImpl.parseIf(SqlParserImpl.java:122)
 at org.seasar.dao.parser.SqlParserImpl.parseComment(SqlParserImpl.java:106)
 at org.seasar.dao.parser.SqlParserImpl.parseToken(SqlParserImpl.java:68)
 at org.seasar.dao.parser.SqlParserImpl.parseEnd(SqlParserImpl.java:143)
 at org.seasar.dao.parser.SqlParserImpl.parseBegin(SqlParserImpl.java:132)
 at org.seasar.dao.parser.SqlParserImpl.parseComment(SqlParserImpl.java:108)
 at org.seasar.dao.parser.SqlParserImpl.parseToken(SqlParserImpl.java:68)
 at org.seasar.dao.parser.SqlParserImpl.parse(SqlParserImpl.java:57)
 at
org.seasar.dao.impl.AbstractDynamicCommand.setSql(AbstractDynamicCommand.jav
a:45)
 at
org.seasar.dao.impl.DaoMetaDataImpl.setupSelectMethodByManual(DaoMetaDataImp
l.java:349)
 at
org.seasar.dao.impl.DaoMetaDataImpl.setupMethodByManual(DaoMetaDataImpl.java
:329)
 at
org.seasar.dao.impl.DaoMetaDataImpl.setupMethodBySqlFile(DaoMetaDataImpl.jav
a:284)
 at
org.seasar.dao.impl.DaoMetaDataImpl.setupMethod(DaoMetaDataImpl.java:225)
 at
org.seasar.dao.impl.DaoMetaDataImpl.setupMethod(DaoMetaDataImpl.java:218)
 at
org.seasar.dao.impl.DaoMetaDataImpl.setupSqlCommand(DaoMetaDataImpl.java:212
)
 at org.seasar.dao.impl.DaoMetaDataImpl.initialize(DaoMetaDataImpl.java:203)
 at
org.seasar.dao.impl.DaoMetaDataFactoryImpl.createDaoMetaData(DaoMetaDataFact
oryImpl.java:123)
 at
org.seasar.dao.impl.DaoMetaDataFactoryImpl.getDaoMetaData(DaoMetaDataFactory
Impl.java:95)
 at
org.seasar.dao.interceptors.S2DaoInterceptor.invoke(S2DaoInterceptor.java:51
)
 at
org.seasar.dao.pager.PagerS2DaoInterceptorWrapper.invoke(PagerS2DaoIntercept
orWrapper.java:64)
 at
org.seasar.framework.aop.impl.NestedMethodInvocation.proceed(NestedMethodInv
ocation.java:43)
 at
org.seasar.framework.aop.interceptors.TraceInterceptor.invoke(TraceIntercept
or.java:50)
 at
org.seasar.framework.aop.impl.NestedMethodInvocation.proceed(NestedMethodInv
ocation.java:43)
 at
org.seasar.framework.aop.interceptors.InterceptorChain.invoke(InterceptorCha
in.java:42)
 at
CodeDefineDao$$EnhancedByS2AOP$$7c4
c51$$MethodInvocation$$getAllCodeDefines0.proceed(MethodInvocationClassGener
ator.java)
 at
CodeDefineDao$$EnhancedByS2AOP$$7c4
c51.getAllCodeDefines(CodeDefineDao$$EnhancedByS2AOP$$7c4c51.java)
 at
Client.main(ZinkyuClient.java:35)
Caused by: ognl.ExpressionSyntaxException: Malformed OGNL expression: コード
ID != null [ognl.TokenMgrError: Lexical error at line 1, column 4.
Encountered: "\uff29" (65321), after : ""]
 at ognl.Ognl.parseExpression(Ognl.java:119)
 at org.seasar.framework.util.OgnlUtil.parseExpression(OgnlUtil.java:69)
 ... 29 more

-- 
鳥羽 哲也




Seasar-user メーリングリストの案内