在MySql和Oracle中存储Unicode字符

时间:2011-03-01 07:05:05

标签: mysql oracle unicode utf-8

场景:MySql和Oracle中的数据库。两者都有相同的表和相同的列。在其中一个表中,我有一个列,'FullName'。

使用的Oracle数据类型是VarChar2(64)。 使用的MySql数据类型是VarChar(64)。

支持Unicode字符UTF 8用作默认字符集。

我在Oracle中遇到错误,其中“对于列来说价值太大”,而在MySql中它可以正常工作。

我想知道,这两个dbase有什么区别?

注意:对于UTF 8编码的日语字符需要3个字节。

先谢谢。

1 个答案:

答案 0 :(得分:2)

它在MYSQL中工作的原因是因为MYSQL中的VarChar(64)意味着64个字符,默认字符是UTF8。

对于oracle它没有用,虽然Oracle的默认字符集是UTF8。原因是VarChar2(64),表示64字节。对于日语,UTF 8编码中的字符占用单个字符的3个字节。因此错误“值对于列来说太大了。”

感谢David Sykes提供以下链接中的解决方案。

Difference between BYTE and CHAR in column datatypes