我们有一个 jdbc 程序,它将数据从一个数据库移动到另一个数据库。
- 源数据库使用的是 Latin9 字符集
- 目标数据库使用 UTF-8 编码,列的大小以字节而不是字符指定
- 我们已将源数据库的 ddl 脚本转换为目标数据库中的等效脚本,保持列的大小不变。
- 在某些情况下,如果有一些特殊字符,转换为 UTF-8 后的数据大小超过了目标数据库中列的大小,导致 jdbc 程序失败。
我知道 UTF-8 是可变宽度编码方案,每个字符可以占用 1-4 个字节,因为最坏的解决方案是分配目标数据库中列大小的 4 倍。
有更好的估计吗?