泰语字符不允许超过1333个字符来自Java代码

时间:2015-12-30 11:39:27

标签: oracle thai

泰语字符不允许Java代码中超过1333个字符。除了在db中使用CLOB数据类型之外,有任何可能的方法。我们正在使用Oracle 11g。

2 个答案:

答案 0 :(得分:1)

简单地说,没有(我假设你使用VARCHAR2数据类型。),除了带有EXTENDED字符串的Oracle 12c。

VARCHAR2列在正常模式下允许4000 字节,在扩展时允许最多32767。

Thai需要多字节字符,这就是超过1333个字符占用超过4000字节的原因。

NVARCHAR2列在普通模式下允许2000 字符,在扩展模式下最多允许16383。

答案 1 :(得分:0)

什么是db字符集?

我怀疑你的情况如下:

  • al32utf8是db字符集。
  • 表中的varchar2列具有字节语义。

utf8编码表示最多3个字节的每个。因此,您遇到的长度限制为1333而不是4000。

您可以使用ALTER TABLE MODIFY <column> VARCHAR2(n CHAR);将长度语义从字节更改为字符(参见:here)。

为了完整性:如果您使用单个字节db字符集(如WE8ISO8859P11(iso 8859-11,泰语脚本)进行操作,则字符可以由基本字符和变音符号组成。在这种情况下,您可能已成功更改数据源中的编码以使用复合字符的代码点。但是,我认为这种情况不太可能,因为实际每个的测试数据字符必须由三部分组成以匹配观察结果。