通过ODBC向Access/Excel导入日台韩字符出现乱码问题求助
解决ODBC导入中日韩字符乱码问题
一、Oracle ODBC连接配置调整
你的TNS配置未指定字符集,这是导致非欧洲字符乱码的核心原因,调整如下:
- 修改TNSNAMES.ORA配置,在
CONNECT_DATA段添加(CHARACTERSET = AL32UTF8),强制连接时使用UTF-8字符集:database1_app.PROD = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS=(PROTOCOL=TCP)(PORT=1521)(HOST=server1.xx99.company.net)) (ADDRESS=(PROTOCOL=TCP)(PORT=1521)(HOST=server2.xx99.company.net)) (ADDRESS=(PROTOCOL=TCP)(PORT=1521)(HOST=server3.xx99.company.net)) ) (CONNECT_TIMEOUT=10)(RETRY_COUNT=5)(RETRY_DELAY=2)(TRANSPORT_CONNECT_TIMEOUT=2) (LOAD_BALANCE=off) (FAILOVER=on) (CONNECT_DATA= (SERVER=DEDICATED) (SERVICE_NAME=oracle_conn) (CHARACTERSET = AL32UTF8) (FAILOVER_MODE=(TYPE=SELECT)(METHOD=BASIC)(RETRIES=180)(DELAY=5)) ) ) - 打开ODBC管理器,找到对应的Oracle数据源,进入配置界面,确认字符集选项设为
AL32UTF8,不要选GBK或其他单字节字符集。
二、SQL Server ODBC连接配置调整
SQL Server默认用ANSI编码传输数据,需强制启用Unicode支持:
- 修改连接字符串,添加
Unicode=True参数(如需指定UTF-8,可额外添加CharacterSet=UTF-8):server4.xx99.company.net,1128;Database=你的数据库名;Unicode=True;UID=你的用户名;PWD=你的密码; - 在ODBC管理器配置SQL Server数据源时,勾选使用Unicode字符选项,确保数据以Unicode格式传输。
三、Access/Excel端导入设置
- 导入Access时,在导入向导的字段设置环节,把所有文本字段的数据类型设为
短文本或长文本,避免使用仅支持ANSI的旧类型。 - 导入Excel时,先把目标单元格格式设为
文本,或者在导入向导里选择Unicode文本作为数据类型检测规则,防止Excel自动转换编码导致乱码。
四、验证与排查
- 重新配置后,导入少量中日韩字符数据测试,检查显示是否正常。
- 若问题依旧,检查数据库端字符集:
- Oracle执行
SELECT userenv('NLS_CHARACTERSET') FROM dual;,确认结果是AL32UTF8; - SQL Server执行
SELECT collation_name FROM sys.databases WHERE name='你的数据库名';,确认排序规则支持UTF-8(比如Chinese_Taiwan_Stroke_CI_AS_UTF8、Japanese_CI_AS_UTF8这类带UTF8后缀的)。
- Oracle执行
内容的提问来源于stack exchange,提问作者N G
相关产品推荐
相关产品推荐

