首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从拉丁语-9转换为UTF-8的字符串大小(ISO/IEC 8859-15)

从拉丁语-9转换为UTF-8的字符串大小(ISO/IEC 8859-15)
EN

Stack Overflow用户
提问于 2013-12-30 20:49:58
回答 2查看 520关注 0票数 0

我们有一个jdbc程序,它将数据从一个数据库转移到另一个数据库。

  1. 源数据库使用Latin9字符集。
  2. 目标数据库使用UTF-8编码,列的大小以字节而不是字符指定。
  3. 我们已经将源数据库的ddl脚本转换为目标数据库中的等效脚本,保持列的大小不变。
  4. 在某些情况下,如果有一些特殊字符,转换为UTF-8后的数据大小将超过目标数据库中列的大小,从而导致jdbc程序失败。

据我所知,UTF-8是可变宽度的编码方案,每个字符可以占用1-4字节,考虑到这一点,最坏的解决方案是分配目标数据库中列大小的4倍。

有更好的估计吗?

EN

回答 2

Stack Overflow用户

发布于 2013-12-30 20:57:14

由于无法预先知道文本字符串会增长多少,所以我认为您所能做的就是试运行将文本转换为UTF-8,并生成警告,某些列需要增加大小。任何ASCII (非重音)字符都将保持为单个字节,而大多数拉丁-9重音字符可能各为2个字节,但有些字符可能为3。您必须查看拉丁-9和UTF-8表,看看转换后是否有3或4个字节。尽管如此,你还是要检查你的拉丁文-9文本,看看它会增长多少。

票数 1
EN

Stack Overflow用户

发布于 2014-01-01 21:16:48

拉丁文中的欧元符号在utf-8中用3个字节表示.ascii字符只需1字节。剩下的127个字符将占用2个字节。根据实际的区域设置(以及通常使用的字符),1.5倍到2倍之间的估计应该足够了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20847328

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档