Oracle -> Azure SQL,编码问题

guz6ccqo  于 2023-11-17  发布在  Oracle
关注(0)|答案(1)|浏览(152)

我已经创建了数据库链接,使Oracle和Azure SQL之间的连接。当我运行查询

SELECT
'text',
a.c5,
d.c6
from tab1@db_link_azure a
 left join tab2@db_link_azure  b
   on a.c1 = b.c2
 left join tab3@db_link_azure c
   on c.c3= b.c4
 left join tab4@db_link_azure d
   on a.c5= d.c6

字符串
它工作得很好。但是当我添加新的列来选择状态时,

SELECT
  'text',
   a.c5,
   d.c6,
   a.c10
from 
   tab1@db_link_azure a
   left join tab2@db_link_azure  b on a.c1 = b.c2
   left join tab3@db_link_azure c on c.c3= b.c4
   left join tab4@db_link_azure d on a.c5= d.c6


d.c6列返回中文字符-

㔸㈱㌹愱摢敡愸㔰㥤捥搸攷㑢㤶ㄹ㝡
㔸㈱㌹愱摢敡愸㔰㥤捥搸攷㑢㤶ㄹ㝡


你知道为什么吗?

0x6upsns

0x6upsns1#

  • 您所面临的列d.c6返回中文字符的问题可能是由于Oracle和Azure SQL数据库之间存储和解释字符的方式存在差异。
  • 这可能是由与数据库如何处理字符编码和表示相关的设置引起的。
  • 确保通过运行locale charmapecho $LANG命令检查终端上的设置,以确认它们是否设置为ZHS16GBK

这将帮助您验证字符编码是否与导致问题的字符编码匹配。
您不一定需要使用与数据库完全相同的字符集。在终端中使用NLS_LANG=AMERICAN_AMERICA.AL32UTF8UTF-8也应该有效。关键是确保NLS_LANG设置与终端中的字符集匹配。
下面也试试

HS_LANGUAGE=AMERICAN_AMERICA.ZHS16GBK

字符串

HS_LANGUAGE=CHINESE_CHINA.ZHS16GBK

HS_LANGUAGE=AMERICAN_AMERICA.ZHS16GBK


并评论了

#HS_FDS_REMOTE_DB_CHARSET = ZHS16GBK

参考:Oracle connect to SQL Server Chinese character becomes question mark

ORACLE SQLPLUS CHINESE CHARACTERS GARBLED-ORACLE

相关问题