在Unicode数据库中是否存在使用NLS_LENGTH_SEMANTICS = BYTE的情况?

时间:2010-10-08 10:19:10

标签: oracle unicode character-encoding

拥有一个Unicode(多字节字符集)Oracle数据库与NLS_LENGTH_SEMANTICS = BYTE似乎是一场等待发生的灾难。大多数应用程序中的字段验证仅检查字符数是否在边界内,而不是数据库默认字符编码方案中的字节序列长度!如果你有一个Unicode数据库,是否有充分的理由使用NLS_LENGTH_SEMANTICS = BYTE而不是CHAR?

1 个答案:

答案 0 :(得分:2)

我认为这只是遗产。有很多旧的应用程序总是在字节上工作,如果这种情况发生变化可能会感到困惑。如果在其下面重新定义索引,那么字节字符串和索引转移到以字节为单位的外部应用程序/语言的任何内容都会以奇怪和不可预测的方式出错。

我不会对新应用程序使用字节语义,我同意它不是一个好的默认值。但是希望你使用NVARCHAR,这可以避免这个问题(因为它始终基于字符)。