这似乎是一个字符集问题。 SQL * Plus支持globalisation,因此您使用的其中一个字符可能不在您会话的字符集中。如果我设置我的NLS_LANG:
export NLS_LANG="ENGLISH_UNITED KINGDOM.WE8ISO8859P1"
Rodné
číslo Meno Priezvisko
---------- -------------------- --------------------
7951051548 Bohdana Filcova
4054207561 Bohumila Kmecova
...然后我得到相同的行为,你做。 (它稍微修改,但不是由set tab off
修复)。如果我更改了会议UTF8然后对齐正确:
export NLS_LANG="ENGLISH_UNITED KINGDOM.UTF8"
Rodné
číslo Meno Priezvisko
---------- -------------------- --------------------
7951051548 Bohdana Filcova
4054207561 Bohumila Kmecova
这是在11gR2中,顺便说一下,所以它不是一个Oracle 10g的问题;我的数据库字符集是AL32UTF8。同样有趣的是,在每次会议中转储价值,'选择转储'('Rodné|číslo',1016)from dual';与WE8ISO8859P1:
DUMP('RODNé|číSLO',1016)
--------------------------------------------------------------------------------
Typ=96 Len=20 CharacterSet=AL32UTF8: 52,6f,64,6e,c3,83,c2,a9,7c,c3,84,c2,8d,c3,8
3,c2,ad,73,6c,6f
...与UTF8:
DUMP('RODNÉ|ČÍSLO',1016)
--------------------------------------------------------------------------------
Typ=96 Len=14 CharacterSet=AL32UTF8: 52,6f,64,6e,c3,a9,7c,c4,8d,c3,ad,73,6c,6f
想必与前它认为输出占用更多的空间比实际的,所以它是不填充标题非常正确。
č
似乎是问题所在。它是defined in Unicode,但不是在WE8ISO8859P1或WE8MSWIN1252(源自here)。在转储中显示的Unicode版本为c4,8d
,而对于非Unicode版本,则从c3,84,c2,8d
开始构建。相当多的以及为什么导致你看到的效果超出了我对字符集的理解......
谢谢,它的工作原理就像你写的。 – CoCumis 2013-05-13 15:13:25