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升级
但是,如果是将数据库的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
解决问题。







评论排行榜