数据库脚本编码问题

在潍坊现场更新数据库脚本时遇到编码问题,本地UTF-8格式的脚本在执行时出现GBK乱码。通过转换为ANSI并使用notepad++查询Oracle数据库编码为GBK,问题解决。但notepad与UltraEdit转换ANSI方式不同,导致乱码表现不一致。新建记事本的ANSI默认可能是GBK编码。
摘要由CSDN通过智能技术生成

编码

记一次潍坊现场更新数据库脚本过程中的问题。

脚本本地未做测试,在潍坊运行时,频繁出现各种报错信息,中文均变成GBK式的乱码情况,结果是有很多表和信息未能更新成功。

本地用UltraEdit打开sql脚本文件可以看到是UTF-8格式的,接着我用notepad++做了编码转换,即转换为ANSI,再执行时除了表已建立和约束唯一,没有其他问题。那么问题来了:ANSI到底是什么编码格式。

https://www.cnblogs.com/malecrab/p/5300486.html回答了这个问题,结论如下:

在这里插入图片描述

自然notepad++中的ANSI就是GBK了,对应UltraEdit中的ANSI/OEM-GBK编码,并且通过下列语句查询潍坊Oracle也得出数据库编码是GBK。所以转化为ANSI之后脚本才执行成功。

SELECT * FROM v$nls_parameters

但是还有一个问题,notepad中转换为ANSI之后,文字并没有变成GBK式的乱码,而用UltraEdit转换为ANSI/OEM-GBK编码之后,明显看出变成了GBK式的乱码,其中原因还没弄清楚。转为ANSI也许是这么回事:notepad将当前内容转换为GBK,相当于新建一个编码为GBK的文档然后copy内容保存。而使用ANSI编码:将内容以ANSI的形式转码。

但需要注意的是,我发觉在UltraEdit中,UTF8转为GBK和新建文档调整为GBK再写入保存,两者是不一样的。前者会导致中文出现GBK式的乱码,而后者不会。同理GBK转为UTF8和新建调整为UTF8也是不一样的,前者会产生UTF8样式的乱码,而后者是正常的。

TF8样式的乱码,而后者是正常的。**

在新建记事本的时候,注意到下面保存格式有两个选项:UTF8、ANSI。看来ANSI默认应该是GBK的。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值