此前我在文章中提到过使用od命令查看dmp文件字符集的问题:
http://www.eygle.com/special/NLS_CHARACTER_SET_05.htm
后来看到Itpub上有人进行相关的讨论,并提出,同样的命令得出和我不同的输出。
检查一下,发现问题的原因在于Solaris/Linux上od命令的输出不同导致:
我当初的测试结果是Solaris下的输出:
$ cat a.dmp|od -x|head
0000000 0303 5445 5850 4f52 543a 5630 392e 3032
0000020 2e30 300a 4445 5947 4c45 0a52 5553 4552
0000040 530a 3130 3234 0a30 0a33 320a 300a 0354
0000060 0354 07d0 0001 0000 0000 0000 0000 0005
0000100 0020 2020 2020 2020 2020 2020 2020 2020
0000120 2020 2020 2020 2020 2020 2020 2020 2020
0000140 2020 2020 2020 2020 2053 756e 2053 6570
0000160 2034 2031 313a 3238 3a33 3720 3230 3035
0000200 612e 646d 7000 0000 0000 0000 0000 0000
0000220 0000 0000 0000 0000 0000 0000 0000 0000
而在Linux下od的输出和Solaris是不同的:
[oracle@danaly ~]$ cat a.dmp|od -x|head
0000000 0303 4554 5058 524f 3a54 3156 2e30 3230
0000020 302e 0a31 5344 5359 4554 0a4d 5552 4553
0000040 5352 380a 3931 0a32 0a30 3032 300a 030a
0000060 0354 0754 00d0 0001 0000 0000 0000 0000
0000100 0005 2020 2020 2020 2020 2020 2020 2020
0000120 2020 2020 2020 2020 2020 2020 2020 2020
0000140 2020 2020 2020 2020 2020 6f4d 206e 6553
0000160 2070 2034 3131 323a 3a33 2035 3032 3630
0000200 2e61 6d64 0070 0000 0000 0000 0000 0000
0000220 0000 0000 0000 0000 0000 0000 0000 0000
注意Linux下od -x等加于-t x2
[oracle@danaly ~]$ cat a.dmp|od -t x2|head
0000000 0303 4554 5058 524f 3a54 3156 2e30 3230
0000020 302e 0a31 5344 5359 4554 0a4d 5552 4553
0000040 5352 380a 3931 0a32 0a30 3032 300a 030a
0000060 0354 0754 00d0 0001 0000 0000 0000 0000
0000100 0005 2020 2020 2020 2020 2020 2020 2020
0000120 2020 2020 2020 2020 2020 2020 2020 2020
0000140 2020 2020 2020 2020 2020 6f4d 206e 6553
0000160 2070 2034 3131 323a 3a33 2035 3032 3630
0000200 2e61 6d64 0070 0000 0000 0000 0000 0000
0000220 0000 0000 0000 0000 0000 0000 0000 0000
显示结果中,高位和低位发生了交换。
所以0303 4554 ,应该为: 0303 5445
http://www.eygle.com/special/NLS_CHARACTER_SET_05.htm
后来看到Itpub上有人进行相关的讨论,并提出,同样的命令得出和我不同的输出。
检查一下,发现问题的原因在于Solaris/Linux上od命令的输出不同导致:
我当初的测试结果是Solaris下的输出:
$ cat a.dmp|od -x|head
0000000 0303 5445 5850 4f52 543a 5630 392e 3032
0000020 2e30 300a 4445 5947 4c45 0a52 5553 4552
0000040 530a 3130 3234 0a30 0a33 320a 300a 0354
0000060 0354 07d0 0001 0000 0000 0000 0000 0005
0000100 0020 2020 2020 2020 2020 2020 2020 2020
0000120 2020 2020 2020 2020 2020 2020 2020 2020
0000140 2020 2020 2020 2020 2053 756e 2053 6570
0000160 2034 2031 313a 3238 3a33 3720 3230 3035
0000200 612e 646d 7000 0000 0000 0000 0000 0000
0000220 0000 0000 0000 0000 0000 0000 0000 0000
而在Linux下od的输出和Solaris是不同的:
[oracle@danaly ~]$ cat a.dmp|od -x|head
0000000 0303 4554 5058 524f 3a54 3156 2e30 3230
0000020 302e 0a31 5344 5359 4554 0a4d 5552 4553
0000040 5352 380a 3931 0a32 0a30 3032 300a 030a
0000060 0354 0754 00d0 0001 0000 0000 0000 0000
0000100 0005 2020 2020 2020 2020 2020 2020 2020
0000120 2020 2020 2020 2020 2020 2020 2020 2020
0000140 2020 2020 2020 2020 2020 6f4d 206e 6553
0000160 2070 2034 3131 323a 3a33 2035 3032 3630
0000200 2e61 6d64 0070 0000 0000 0000 0000 0000
0000220 0000 0000 0000 0000 0000 0000 0000 0000
注意Linux下od -x等加于-t x2
[oracle@danaly ~]$ cat a.dmp|od -t x2|head
0000000 0303 4554 5058 524f 3a54 3156 2e30 3230
0000020 302e 0a31 5344 5359 4554 0a4d 5552 4553
0000040 5352 380a 3931 0a32 0a30 3032 300a 030a
0000060 0354 0754 00d0 0001 0000 0000 0000 0000
0000100 0005 2020 2020 2020 2020 2020 2020 2020
0000120 2020 2020 2020 2020 2020 2020 2020 2020
0000140 2020 2020 2020 2020 2020 6f4d 206e 6553
0000160 2070 2034 3131 323a 3a33 2035 3032 3630
0000200 2e61 6d64 0070 0000 0000 0000 0000 0000
0000220 0000 0000 0000 0000 0000 0000 0000 0000
显示结果中,高位和低位发生了交换。
所以0303 4554 ,应该为: 0303 5445
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




