Java 使用UTF-8编码导出HSQLDB数据库
我正在尝试导出GeoTools HSQL 2数据库,并将其加载回需要旧数据库格式的遗留系统的HSQL 1。这些表包括诸如度符号之类的字符。但是,它显示为转义序列Java 使用UTF-8编码导出HSQLDB数据库,java,utf-8,hsqldb,geotools,Java,Utf 8,Hsqldb,Geotools,我正在尝试导出GeoTools HSQL 2数据库,并将其加载回需要旧数据库格式的遗留系统的HSQL 1。这些表包括诸如度符号之类的字符。但是,它显示为转义序列\u0080,而不是编码字符。我需要修复这个问题,或者让HSQL 1导入将转义字符转换回正确的编码 e、 g 在结果中,我看到了这样的情况\u00b5: INSERT INTO EPSG_ALIAS VALUES(389,'epsg_unitofmeasure',9109,7302,'\u00b5rad','') 查看hsqldb,我不
\u0080
,而不是编码字符。我需要修复这个问题,或者让HSQL 1导入将转义字符转换回正确的编码
e、 g
在结果中,我看到了这样的情况\u00b5
:
INSERT INTO EPSG_ALIAS VALUES(389,'epsg_unitofmeasure',9109,7302,'\u00b5rad','')
查看hsqldb,我不确定如何控制正在写入的数据的编码,假设这是要查看的正确位置:
编码看起来像Unicode(一到四个十六进制数字)。 在
bash
中尝试此操作(快速和肮脏):
echo-ne“$(dump\u utf8.sql
您可以使用以下过程:
为每个表创建文本表copyname(类似于sourcename)
SET TABLE thecopyname SOURCE'thecopyname.csv;编码=UTF-8'
用于每个复制
表格中插入copyname
表,使用从源名称中选择*
为每个copyname
copyname.csv
文件(每个文件都有自己的名称)SET TABLE thecopyname SOURCE'thecopyname.csv;编码=UTF-8'
您能解释一下吗?
$(
读取sql转储(bash命令替换,与$(cat dump.sql)
相同)。输出是解释unicode反斜杠转义字符(选项-e)的回声,并且没有尾随换行符(选项-n)。然后将回显结果重定向到文件dump_utf8.sql。我假设您的系统运行在默认区域设置UTF-8中,为了验证它,请在bash shell中使用echo$LANG
,从而生成有效的UTF-8编码的sql转储。这是一个非常酷的技巧,但它会被\u000a转换为新行而绊倒。我在UI中执行此操作的机制方面遇到了问题,所以我在这里问了一个后续问题:
INSERT INTO EPSG_ALIAS VALUES(389,'epsg_unitofmeasure',9109,7302,'\u00b5rad','')