Oracle 19c中UTF-8配置:解决韩文查询复制后乱码问题
Oracle 19c 韩文查询语句显示问号的解决方法
1. 检查数据库字符集
首先确认数据库本身是否支持韩文存储和显示,执行以下查询:
SELECT value FROM nls_database_parameters WHERE parameter = 'NLS_CHARACTERSET';
- 若返回结果为
AL32UTF8(通用UTF-8字符集,支持所有语言)或KO16KSC5601(韩文专用字符集),则数据库字符集符合要求。 - 若返回其他字符集(如WE8ISO8859P1),需考虑重新创建数据库并指定支持韩文的字符集(注意:ALTER命令修改字符集存在数据损坏风险,不建议直接操作)。
2. 配置客户端NLS_LANG环境变量
客户端的NLS_LANG必须与数据库字符集兼容,才能正确传输韩文:
Windows系统
- 系统环境变量:右键「此电脑」→ 属性 → 高级系统设置 → 环境变量,新建系统变量
NLS_LANG,值设为KOREAN_KOREA.AL32UTF8(或AMERICAN_AMERICA.AL32UTF8)。 - 注册表配置:打开注册表编辑器,定位到
HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_<你的OracleHome名称>,修改NLS_LANG键值为上述字符集组合。
Linux/Unix系统
在用户shell配置文件(如.bashrc、.profile)中添加:
export NLS_LANG=KOREAN_KOREA.AL32UTF8
执行source ~/.bashrc使配置生效。
3. 调整客户端工具编码设置
PL/SQL Developer
- 打开「工具」→「首选项」→「连接」,将「字符集」设置为
AL32UTF8。 - 右键PL/SQL Developer快捷方式→属性,在「目标」栏末尾添加
-codepage UTF8,确保工具以UTF-8编码运行。
SQL*Plus
- Windows命令提示符:执行
chcp 65001切换到UTF-8编码,再启动SQL*Plus。 - Linux/Unix终端:确保终端编码为UTF-8,可通过
export LC_ALL=en_US.UTF-8设置。
本地编辑器
编辑查询语句时,使用UTF-8编码的编辑器(如Notepad++、VS Code),避免因编码不一致导致韩文转义为问号。
验证配置
完成上述设置后,重新连接数据库,执行查询:
SELECT '안녕하세요' FROM dual;
若返回正确的韩文,则配置生效。
内容的提问来源于stack exchange,提问作者Duy Nguyen TPV
相关产品推荐
相关产品推荐

