2007-02-05

HSQLDB 中文编码问题

关键字: HSQLDB
HSQLDB连接到已经存在的数据库,然后根据该数据库构建新数据库。中文内容是可以正确读取的,没有问题。
但是,如果是将数据库的Script文件拿过来,重新生成数据库内容,数据库内容虽然表面看上去都一样,但是编码有问题。

是这样子的:
HSQLDB数据库默认的编码是ASCII编码,因此,对于我们输入的中文内容,它是以ASCII的编码方式存储到Script文件中的。

当我们通过Script文件生成数据库的时候,我们首先解析文件的内容,JAVA读写文件是以本地操作系统的默认编码方式来进行解析的。我的机器上,是GBK编码。
因此,我们得到的SQL语句和最初存储到Script文件中的SQL语句不一样。存储到Script文件中的中文被编码为GBK了。(GBK的ASCII部分估计是在和ACSCII兼容)

之后,对这个数据库,我们进行计算,生成了度量实体数据库。那么存储进去的内容,那肯定也是GBK编码的(ASCII)。

这样子,我们直接读出这个ASCII编码的字符串,显然还是不能得到我们的中文内容。

因此,问题就在此:从ASCII编码的字符串中还原我们的中文内容。

解决这个问题很简单:

String unicodeStr = StringConverter.asciiToUnicode(ascStr);
System.out.println(unicodeStr);

这样就可以输出中文:)

下面是实例:)
\u5f00\u53d1\u5e73\u53f0_\u8fc7\u7a0b\u670d\u52a1\u7ec4_\u8d28\u91cf\u5e73\u53f03.0\u5347\u7ea7
开发平台_过程服务组_质量平台3.0升级
评论
lily1314 2008-01-29
我用hsqldb进行order by查询,查出的结果排序方式与中文排序方式不同,请问我有什么方法可以解决吗?
hiwzg 2007-02-07
解决问题。
发表评论

您还没有登录,请登录后发表评论

hiwzg
搜索本博客
最近加入圈子
存档
最新评论
  • [转]山东酒场规则
    规矩十八,花生米对喝酒人来说,是个好东西。保持清醒的头脑,酒后嘘寒问暖是少不了的 ...
    -- by hiwzg
  • 出差归来
    无意看到你的帖子了,顶一个。
    -- by lovezqw
  • 士兵突击观后感
    嗯,最近古装剧太多了。不是皇帝,就是盟主,又不是天天生活在古代。这类的片子多了不 ...
    -- by hiwzg
  • 士兵突击观后感
    士兵突击 是一部好片子,好在他真实.比起以前的很多军旅题材电视电影,有巨大的进步 ...
    -- by elf8848
  • 《资本运营论》
    JAVAEYE的系统做得也不够好啊,没有登录,填写了评论也没有用。必须登录系统, ...
    -- by hiwzg