首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关于jt400的AS400编码问题的DB2

关于jt400的AS400编码问题的DB2
EN

Stack Overflow用户
提问于 2016-05-24 17:45:42
回答 2查看 2.9K关注 0票数 0

我使用jt400从as400 - db2上的数据库中获取数据。

我的数据库使用ccsid 37编码。我只对波兰字母有问题。如何强制jt400使用正确的编码?

我试过了

代码语言:javascript
复制
jdbc:as400://MY_SYSTEM/LIBRARY;translate binary=true

AS400Text converer = new AS400Text(stringFromDb.length(), 37);
String stringAfterConversion = converter.toObject(stringFromDb.getBytes());

但它不起作用

EN

回答 2

Stack Overflow用户

发布于 2016-05-24 21:05:33

CCSID 37是英语,不包含某些波兰语字符。波兰语CCSID是1153,或870 (不含欧元符号)。

您可以在此处看到CCSID37(字符集697)中包含的符号:ftp://ftp.software.ibm.com/software/globalization/gcoc/attachments/CS00697.pdf

您可以在此处看到CCSID1153(字符集1375)中包含的符号:ftp://ftp.software.ibm.com/software/globalization/gcoc/attachments/CS01375.pdf

如果数据库字段包含CCSID 37,您将无法存储1153中缺少CCSID的字符。将转换常用字符。您可以尝试将数据库更改为使用UTF-16或CCSID1200。它包含CCSID 37和CCSID 1153中的所有字符。

票数 3
EN

Stack Overflow用户

发布于 2016-05-24 21:02:57

如果设置正确,您应该不需要进行任何手动转换。DB和JDBC驱动程序会为您处理它。

您说您的数据库使用的是CCSID37,这是美国、加拿大、荷兰、葡萄牙、巴西、新西兰和澳大利亚使用的英语。

要处理波兰语字符,您可能需要CCSID870(每个Language identifiers and associated default CCSIDs)

但是,CCSID是按列分配的。因此,该表中该列中的所有内容都需要位于一个或另一个CCSID中。

如果您需要将英语和波兰语都存储在同一个表的同一列中,那么最好的选择是将这些列更改为Unicode。

或者,您可以将数据标记为“二进制”CCSID 65535,这样系统就不会尝试转换它。您将需要translate binary=false,并且您的应用程序将负责知道哪些记录是英语的,哪些是波兰语的。因此您需要在记录中添加一些额外的标志字段。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37409928

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档