JDBC格式错误的Unicode异常

时间:2013-11-19 20:09:31

标签: java database jdbc

我正在尝试在我的Postgres数据库中存储编码的谷歌地图路线。当我使用JDBC对我的servlet执行此操作时,我得到以下异常。当API尝试解析我插入的字符串时会发生这种情况。但是,当我直接将值插入数据库表时,它无需投诉。

   org.postgresql.util.PSQLException: ERROR: invalid Unicode escape
      Hint: Unicode escapes must be \uXXXX or \UXXXXXXXX.
      Position: 123

抛出此异常的值的一部分是:

}ofi@ukkfNzFuB`Aa@fCkAh@YbAu@rB}Ap@_@t@Wx@Qt@Er@Cx@BnHn@NAR?LCJIJQMsBGe@KYgAyBOu@?OBKHI`@QhA?pAC~@ILE\\QHGHMFs@VqQOkD@_JEu@IKCSFSJIDAH_@DuGByAB[BKFG@F@ROxJ?^FNBDFNCTKLODUEIICG?UJQHEHYDaEDsDDa@HMD_E@kBD}HRcQFuHH{DCGAwA@yBPwRJuHNsAJ_BHcL@mIHmFH{@Po@LWRS~DsCe@eAMOEIMEq@GiBLEoAOkBC{@IoADWn@{AlBr@mBs@H[D_AOwBCk@@s@Je@?OBQl@qBdA{DjAqELUX]LKZSCKGWAICy@NgAX}@|@kB`CmEjCcFnAaD`@mAV}@`@iBp@eE\\uCPaAf@}Ah@gAbAuA`@c@vAsApF{El@q

3 个答案:

答案 0 :(得分:3)

  

当API尝试解析我插入的字符串时会发生这种情况。

我认为你的意思是它在尝试解析你将字符串连接成的SQL时发生了,不是吗?

使用PreparedStatement,并正确使用它。

答案 1 :(得分:2)

在这种情况下,可以使用PreparedStatement准备参数化语句。

使用语句参数可以避免:

  • 特殊字符问题
  • 因此,也是SQL注入

答案 2 :(得分:-1)

JDBC正在将字符串\uCPaAf的这一部分解释为尝试放入unicode。您需要双重转义前面的\\,以便它变为\\\\uCPaAf