分享
 
 
 

给Windows控制台使用正确的NLS_LANG设置

王朝system·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

大多数使用Windows命令提示符来运行SQL*Plus命令的用户通常使用一个字符集,而这种字符集对于超过ASCII 的7位字符范围之外的值就不正确了。一旦你尝试从其他欧洲语言进入有特定音符的字符,扩展字符就会被翻译错误。

举例来说,如果在命令提示窗口运行sqlplus,默认的字符设置通常是AMERICAN_AMERICA.US7ASCII(假如你没有特别指定NLS_LANG字符设置)。如果你将resume字样键入SQL*Plus提示符中,你将看到如下:

sqlplus -s scott/tiger

select 'resume' from dual;

'R?SUM?'

----------

r?sum?

问题是,Windows命令提示符本质上类似于DOS,它继承了代码页的全球语言支持(NLS)。你可以在控制台提示符中键入chcp命令来查看你目前的代码页是什么:

C:\chcp

Active code page: 437

在这个例子中,我们使用了437号代码页和一个美式键盘,因此确切的NLS_LANG字符设置应该是“US8PC437”。US8PC437仅仅检索二进制值并试图将它原样的直接地传送到UTF8数据库。

正确设置NLS_LANG并再次使用这个例子:

C:\set NLS_LANG=AMERICAN_AMERICA.US8PC437

C:\sqlplus -s scott/tiger

select 'resume' from dual;

'RÉSUMÉ'

--------

resume

在Windows中,有一点非常重要,那就是给像SQL*Loader这样的程序以及撰写SQL*Plus脚本(其中可能使用非ASCII字符)保留NLS_LANG变量设置,特别是如果你的编辑器使用的是和DOS/OEM一样的字体。因为它们将和你的代码页设置一致。

NLS_LANG对插入数据也有影响,譬如说:

set NLS_LANG=

sqlplus -s scott/tiger

create table text (a varchar2(40));

insert into text values ('resume');

exit;

set NLS_LANG=AMERICAN_AMERICA.US8PC437

sqlplus -s scott/tiger

insert into text values ('resume');

select a from text;

A

----------------------------------------

r?sum?

resume

select dump(a) from text;

DUMP(A)

-----------------------------------------------------

Typ=1 Len=10: 114,239,191,189,115,117,109,239,191,189

Typ=1 Len=8: 114,195,169,115,117,109,195,169

第一个字节是不正确的,当然并不是有意的。你可以根据需要从Oracle联机文件中查阅正确的NLS_LANG字符设置。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有