gpt4 book ai didi

java - DB2 选择字符问题

转载 作者:可可西里 更新时间:2023-11-01 08:21:20 25 4
gpt4 key购买 nike

我正在尝试从另一个人管理的 DB2 数据库中选择数据,以便我可以将其插入到我管理的 SQL 数据库中以进行数据操作。我正在使用一个 java 程序来执行此操作,并且该程序已在测试数据上成功测试。但是,由于 db2 数据中的奇怪符号,我收到了错误。这是我的错误日志。

Incorrect string value: '\xC2\x97D #5...' for column 'Name' at row 1
java.sql.SQLException: Incorrect string value: '\xC2\x97D #5...' for column 'Name' at row 1
INSERT INTO `Temp_Equipment_Inventory`.`PC_Table10i` SET `Account_No`='1019TJ148001',`Inventory_No`='569931',`Building_No`='0060',`Location`='CLASSRM',`FYYR_No`='2004',`Cost`='635.00',`Name`='MICROPHONE LAVALIER WIRELESS (ISCÂD #5290) SHURE MODEL ULXP14/85 ',`CDCATY`=' ',`CDSRCE`='M',`FLDCAL`=' ',`CDACQN`='G',`FLOWNR`='Y',`FLSHAR`=' ',`CDDELT`='00',`CNYTDT`='00',`NOPURO`='6870607-01 ',`NOPIMO`='01',`CDPREI`='E',`Original_Amount`='155.00',`Serial_Code`='0309040351 ',`CDCOMP`=' ',`NOCHECK`='680146 ',`CDCOMM`='3651400',`Last_Update`='2008-07-18',`CDDEPT`='148',`Room_No`='0300 ',`Date_Scanned`=NULL,`Date_Acquired`='2004-03-09',`Manufacturer_Name`='SHURE ',`Expiry_Date`=NULL

如您所见,名称列中的数据 (ISCÂD #5290) 引发了有趣的错误。但是,当我浏览 db2 表中的数据时,这个 Â 并没有出现。

我已将 mysql 表设置为 UTF-8 unicode ci。

我无法编辑 db2 数据库,因为它不是由我管理的。

我还能做些什么来尝试绕过数据中的这个符号?

最佳答案

\xC2\x97 是用于编码 unicode 字符的 UTF-8 字节序列——(长破折号)

Java 代码似乎已将 UTF-8 数据转换为 UTF-16( native Java 编码),但未对其进行解码。然后插入失败,因为字符 Â 和 em dash 的 UTF-16 代码点实际上是无效的 UTF-8 代码点。

所以也许解决方案是在执行插入之前使用 UTF-8 编解码器解码 DB2 中读取的内容以获得正确的 UTF-16 表示,或者如果目标数据库需要 UTF-8 编码,那么也许是最好的解决方案根本不是通过 java.String 而只是读写二进制数据。

关于java - DB2 选择字符问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7892122/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com