Node.js 我与ibm的关系有点混乱_db@2.6.1在nodejs项目中

Node.js 我与ibm的关系有点混乱_db@2.6.1在nodejs项目中,node.js,character-encoding,db2,loopback,dashdb,Node.js,Character Encoding,Db2,Loopback,Dashdb,我正在从事一个nodejs项目。DB2中有一个公司名“ABC AEROLÍNEAS SA DE CV”。在使用ibm时_db@2.6.1为了得到这个名字,它变成了“ABC航空公司”�在我的头上有一个字母 我试图通过使用python和ibm_db 3.0.1来验证它,得到了“ABC AEROL\xcdNEAS SA DE CV”。我认为“\xcd”应该是正确的,因为它在python控制台中显示“ABC AEROLÍNEAS SA DE CV”。此外,我用JDBC对它进行了测试,也得到了正确的名称

我正在从事一个nodejs项目。DB2中有一个公司名“ABC AEROLÍNEAS SA DE CV”。在使用ibm时_db@2.6.1为了得到这个名字,它变成了“ABC航空公司”�在我的头上有一个字母

我试图通过使用python和ibm_db 3.0.1来验证它,得到了“ABC AEROL\xcdNEAS SA DE CV”。我认为“\xcd”应该是正确的,因为它在python控制台中显示“ABC AEROLÍNEAS SA DE CV”。此外,我用JDBC对它进行了测试,也得到了正确的名称

我不知道为什么nodejs的ibm_db不能得到正确的名称。有人能帮我查一下吗?谢谢

分贝

NodeJS

蟒蛇

十六进制值
\xCD
是一个(扩展的)ASCII值。在UTF-8中,您需要
\xC3\x8D
。在UTF-16中,您需要
\x00\xCD

请注意,某些Windows本机程序会将无效的UTF-8字节显示为有效字符,而严格来说,它们应该显示
或类似


如果使用基于JDBC的SQL编辑器,您将看到� (或空值)在字符串中

什么是数据库代码页和Node.js应用程序的代码页?您正在处理非ASCII字符串,因此需要更新代码以处理字符集编码,即从外部编码(DB)转换为内部编码(code)再转换为外部编码(display).@StefanBecker数据库连接字符串没有字符集属性。即使我添加charset=UTF8,它也不起作用。我还尝试转换公司名称的编码,但没有得到正确的结果。@StefanBecker奇怪的是,ibm_db正在Mac中工作以获得正确的名称,而不是在Win10中。这是DB驱动的错误吗?我认为数据应该正确地存储在DB2中。我和DBevaer核对过了。我不知道如何在这里添加图像。因此,在下面添加快照链接。您可以在列上使用
HEX()
,查看SQL中列值的字节编码。您还可以通过SYSCAT.COLUMNSUse HEX()的CODEPAGE列查看列的代码页?像那样选择GlobalItId、公司全名、十六进制(公司全名)从CEUI.ACCOUNT WHERE GLOBALITOID='GB227V69'`` GLOBALITOID |公司|全名| 3 |-------------------------------------------------------------------------------------------------------------------------GB227V69 | ABC AEROLÍNEAS SA DE CV | 414243204145524F4C38D4E4545415320534120444520456 |因此C38D是您的完全正确的UTF-8。因此,问题不在于如何在DB2中存储数据(假设这是一个1208代码页列)