【问题标题】:Storage of Unicode Characters in MySql and OracleMySql 和 Oracle 中 Unicode 字符的存储
【发布时间】:2011-07-06 07:19:37
【问题描述】:

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

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

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

我在 Oracle 中遇到错误,提示“值对于列而言太大”,而在 MySql 中它可以正常工作。

我想知道,这两个数据库有什么区别?

注意:UTF 8 编码的日文字符占用 3 个字节。

提前致谢。

帕万

【问题讨论】:

  • 在Oracle中,该列是声明为VARCHAR2(64 BYTE)还是VARCHAR2(64 CHAR)
  • 创建表“DUMMYUSER”(...“FULL_NAME”VARCHAR2(64),...);
  • 感谢 Jeffery Kemp 提出这个问题。给了我一个全新的视角来看待问题……找到了解决方案。

标签: mysql oracle unicode utf-8


【解决方案1】:

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

虽然 Oracle 的默认字符集是 UTF8,但它无法正常工作。原因是 VarChar2(64),表示 64 个字节。对于 UTF 8 编码中的日语字符,单个字符占用 3 个字节。因此出现错误“列的值太大”。

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

Difference between BYTE and CHAR in column datatypes

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-11
    • 1970-01-01
    • 2012-09-06
    • 2018-03-07
    • 2010-11-14
    • 2018-12-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多