0

0

如何修改系统字符集_AL32UTF8与ZHS16GBK转换步骤

P粉602998670

P粉602998670

发布时间:2026-03-17 13:19:03

|

311人浏览过

|

来源于php中文网

原创

ORA-12712 错误表明新字符集非旧字符集超集,Oracle 仅允许 ZHS16GBK 升级至 AL32UTF8;降级不可行,强行操作必丢数据,且 CSSCAN 扫描与 ALTER DATABASE 变更需严格遵循三步闭环流程并确保三端字符集一致。

ORA-12712 新字符集必须是旧字符集的超集?

不是必须,但 oracle 强制要求新字符集在 al32utf8zhs16gbk 方向转换时“向下兼容”——实际是反的:zhs16gbk 不是 al32utf8 的超集,所以从 al32utf8 改成 zhs16gbk 在 oracle 里根本不可行,会直接报 ora-12712

真正能走通的只有单向:从 ZHS16GBK 升级到 AL32UTF8。降级(AL32UTF8ZHS16GBK)没有官方支持路径,强行导出再导入也大概率丢数据,尤其含 emoji、生僻字、多语言混合内容时。

  • 检查当前字符集:SELECT * FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER = 'NLS_CHARACTERSET';
  • ZHS16GBK 只能存 GBK 编码范围内的汉字(约 21886 字),超出即乱码或截断
  • AL32UTF8 支持全部 Unicode 字符,但每个中文占 3 字节,空间略增

用 CSSCAN 扫描 ZHS16GBK 库能否安全升级到 AL32UTF8

CSSCAN 是 Oracle 提供的字符集扫描工具,但它只对源库为 ZHS16GBK 且目标设为 AL32UTF8 有意义;对反向操作它不输出有效建议,甚至可能跳过非法字符直接报 “no convertible data”,造成误判。

运行前必须停应用、关闭归档(或确保无活跃事务),否则扫描结果不准。

  • 执行命令示例:csscan username/password FULL=Y TOCHAR=AL32UTF8 LOG=scan_zh2utf CAPTURE=Y
  • 重点看生成的 scan_zh2utf.out 中 “Convertible” 和 “Truncation” 行数 —— 若非零,说明有字段值在转换后长度超限(如 VARCHAR2(10) 存了 4 个中文,在 ZHS16GBK 占 8 字节,转 AL32UTF8 后占 12 字节,会截断)
  • 别信 “All character data is convertible” —— 它不校验列定义长度,只看字节映射是否合法

ALTER DATABASE CHARACTER SET AL32UTF8 报 ORA-12720 怎么办

这个错误意味着数据库不是在 MOUNT 状态下执行,或者当前用户没 ALTER DATABASE 权限,更常见的是:你试图跳过 CSSCAN 直接硬切,Oracle 拒绝这种高危操作。

正确流程必须是三步闭环:停库 → STARTUP MOUNTALTER SYSTEM ENABLE RESTRICTED SESSION → 执行变更。

Spell.tools
Spell.tools

高颜值AI内容营销创作工具

下载
  • 必须用 SYS 用户连接:sqlplus / as sysdba
  • 不能在 OPEN 状态下执行,否则报 ORA-12720
  • 执行前确认无其它实例连着该控制文件(RAC 环境要全停)
  • 变更后首次 OPEN 会触发全库字符验证,若发现不一致数据(如已损坏的 NCHAR 列),可能卡住或报 ORA-12713

改完 AL32UTF8 后应用连不上或中文变问号

不是数据库没改成功,而是客户端环境没同步。Oracle 字符集生效靠三端匹配:服务端(NLS_CHARACTERSET)、客户端 NLS_LANG、应用连接字符串里的字符集声明。

比如 Java JDBC 连接串漏了 ?useUnicode=true&characterEncoding=UTF-8,或者 Linux 终端的 LANG 还是 zh_CN.GB18030,都会导致显示异常。

  • Linux 下临时生效:export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
  • Windows 注册表路径:HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_* 下改 NLS_LANG 值为 AMERICAN_AMERICA.AL32UTF8
  • SQL*Plus 连入后立即查:SELECT * FROM NLS_SESSION_PARAMETERS WHERE PARAMETER = 'NLS_LANGUAGE'; 确认会话层也对齐

最常被忽略的是中间件(如 WebLogic、Tomcat)自身的 JVM 启动参数没加 -Dfile.encoding=UTF-8,导致 String 内部编码和数据库脱节——这时候查数据库是好的,打印日志却是乱码。

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
如何配置Tomcat环境变量
如何配置Tomcat环境变量

配置Tomcat环境变量需要在系统中添加CATALINA_HOME变量,并将Tomcat的安装路径添加到PATH变量中。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

117

2023.10.26

idea如何集成Tomcat
idea如何集成Tomcat

idea集成Tomcat的步骤:1、添加Tomcat服务器配置;2、配置项目部署;3、运行Tomcat服务器;4、访问项目;5、注意事项;6、关闭Tomcat服务器。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

173

2024.02.23

怎么查看Tomcat源代码
怎么查看Tomcat源代码

查看Tomcat源代码的步骤:1、下载Tomcat源代码;2、在IDEA中导入Tomcat源代码;3、查看源代码;4、理解Tomcat的工作原理;5、参与社区和贡献;6、注意事项;7、持续学习和更新;8、使用工具和插件。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

99

2024.02.23

常见的tomcat漏洞有哪些
常见的tomcat漏洞有哪些

常见的tomcat漏洞有:1、跨站脚本攻击;2、跨站请求伪造;3、目录遍历漏洞;4、缓冲区溢出漏洞;5、配置漏洞;6、第三方组件漏洞。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

170

2024.02.23

tomcat日志乱码怎么解决
tomcat日志乱码怎么解决

tomcat日志乱码的解决办法:1、修改tomcat的日志编码设置;2、检查ide的编码设置;3、检查操作系统的编码设置;4、使用过滤器处理日志;5、检查外部系统的编码设置;6、检查文件编码方式等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

159

2024.02.23

weblogic和tomcat有哪些区别
weblogic和tomcat有哪些区别

weblogic和tomcat的区别:1、功能;2、性能;3、规模;4、价格;5、安全性;6、配置和管理;7、社区支持;8、集成能力;9、升级和更新;10、可靠性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

200

2024.02.23

tomcat和nginx有哪些区别
tomcat和nginx有哪些区别

tomcat和nginx的区别:1、应用领域;2、性能;3、功能;4、配置;5、安全性;6、扩展性;7、部署复杂性;8、社区支持;9、成本;10、日志管理。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

245

2024.02.23

tomcat启动闪退怎么解决
tomcat启动闪退怎么解决

tomcat启动闪退的解决办法:1、检查java环境;2、检查环境变量配置;3、检查端口被占用;4、检查配置文件编码;5、检查启动时需要的配置文件;6、检查相关文件是否丢失;7、检查防火墙和杀毒软件设置。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

169

2024.02.23

c++ 字符处理
c++ 字符处理

本专题整合了c++字符处理教程、字符串处理函数相关内容,阅读专题下面的文章了解更多详细内容。

0

2026.03.17

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号