故障报告

1. 问题(故障)描述

mysql -> sqlserver 全角字符乱码

2. 问题(故障)原因

在UTF-8编码里面存在一个特殊的字符,其编码是“0xC2 0xA0”,转换成字符的时候表现为一个半角空格,跟一般的半角空格(ASCII 0x20)不同的是它的宽度不会被压缩,所以排版中常能用到它。但是GB2312、Unicode之类并没有这样的字符,所以转换后前台会显示为“?”号,只是显示为问号而不是真正的问号,所以无法被替换!

把bsd文件用hexdump出来的16进制格式看,确实这个是ee 8d 97,这个在gbk里没有,所以转换不了,nvarchar是unicode格式,所以可以转

3. 解决

采用zcbus11月份之后的ddl解析版本,将varchar类型转换成NVARCHAR即可解决。

4. 参考

https://www.qqxiuzi.cn/bianma/zifuji.php
https://blog.csdn.net/weixin_43520832/article/details/84030994

文档更新时间: 2021-11-08 19:03   作者:阿力