泰语字符不允许Java代码中超过1333个字符。除了在db中使用CLOB数据类型之外,有任何可能的方法。我们正在使用Oracle 11g。
答案 0 :(得分:1)
简单地说,没有(我假设你使用VARCHAR2数据类型。),除了带有EXTENDED
字符串的Oracle 12c。
VARCHAR2
列在正常模式下允许4000 字节,在扩展时允许最多32767。
Thai需要多字节字符,这就是超过1333个字符占用超过4000字节的原因。
NVARCHAR2
列在普通模式下允许2000 字符,在扩展模式下最多允许16383。
答案 1 :(得分:0)
什么是db字符集?
我怀疑你的情况如下:
utf8编码表示最多3个字节的每个。因此,您遇到的长度限制为1333而不是4000。
您可以使用ALTER TABLE MODIFY <column> VARCHAR2(n CHAR);
将长度语义从字节更改为字符(参见:here)。
为了完整性:如果您使用单个字节db字符集(如WE8ISO8859P11
(iso 8859-11,泰语脚本)进行操作,则字符可以由基本字符和变音符号组成。在这种情况下,您可能已成功更改数据源中的编码以使用复合字符的代码点。但是,我认为这种情况不太可能,因为实际每个的测试数据字符必须由三部分组成以匹配观察结果。