﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-风萧萧兮~~易水寒~~~-文章分类-oracle</title><link>http://www.blogjava.net/xjacker/category/46164.html</link><description>互联网大杂烩</description><language>zh-cn</language><lastBuildDate>Tue, 31 Aug 2010 02:29:48 GMT</lastBuildDate><pubDate>Tue, 31 Aug 2010 02:29:48 GMT</pubDate><ttl>60</ttl><item><title>oralce客户端的字符编码设置</title><link>http://www.blogjava.net/xjacker/articles/NLS_LANG.html</link><dc:creator>风萧萧兮</dc:creator><author>风萧萧兮</author><pubDate>Mon, 30 Aug 2010 11:43:00 GMT</pubDate><guid>http://www.blogjava.net/xjacker/articles/NLS_LANG.html</guid><wfw:comment>http://www.blogjava.net/xjacker/comments/330325.html</wfw:comment><comments>http://www.blogjava.net/xjacker/articles/NLS_LANG.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xjacker/comments/commentRss/330325.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xjacker/services/trackbacks/330325.html</trackback:ping><description><![CDATA[今天在利用PL/SQL DEVELOPER 往oracle中导入日文数据时，总是出现乱码。<br />
我想肯定是客户端和服务端的字符编码设置不一致导致的。<br />
上网google得知oralce字符编码设置和查询的一些方法，记录如下：<br />
<br />
<p>1. NLS_LANG 参数组成<br />
NLS_LANG参数由以下部分组成:<br />
NLS_LANG=&lt;Language&gt;_&lt;Territory&gt;.&lt;Clients Characterset&gt;</p>
<p>NLS_LANG各部分含义如下:<br />
LANGUAGE指定:<br />
-Oracle消息使用的语言<br />
-日期中月份和日显示<br />
TERRITORY指定<br />
-货币和数字格式<br />
-地区和计算星期及日期的习惯<br />
CHARACTERSET:<br />
-控制客户端应用程序使用的字符集<br />
通常设置或者等于客户端(如Windows)代码页 <br />
或者对于unicode应用设置为UTF8</p>
<p>在Windows上查看当前系统的代码页可以使用chcp命令:<br />
E:\&gt;chcp<br />
&nbsp;活动的代码页: 936</p>
<p>代码页936也就是中文字符集 GBK,在Microsoft的官方站点上，我们可以遭到关于936代码页的具体编码规则,请参考以下链接:<br />
http://www.microsoft.com/globaldev/reference/dbcs/936.htm</p>
<p><br />
2. 查看 NLS_LANG 的方法<br />
Windows使用:</p>
<p>echo %NLS_LANG%<br />
如:<br />
E:\&gt;echo %NLS_LANG%<br />
AMERICAN_AMERICA.ZHS16GBK</p>
<p>Unix使用:</p>
<p>env|grep NLS_LANG<br />
如:<br />
/opt/oracle&gt;env|grep NLS_LANG<br />
NLS_LANG=AMERICAN_CHINA.ZHS16GBK</p>
<p>Windows客户端设置,可以在注册表中更改NLS_LANG,具体键值位于:<br />
HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOMExx\<br />
xx指存在多个ORACLE_HOME时系统编号。</p>
<p><br />
3. 查看数据库当前字符集参数设置<br />
SELECT * FROM v$nls_parameters;</p>
<p><br />
4. 查看数据库可用字符集参数设置<br />
SELECT * FROM v$nls_valid_values;</p>
<p><br />
5. 客户端 NLS_LANG 的设置方法<br />
Windows:<br />
# 常用中文字符集<br />
set NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK<br />
# 常用unicode字符集<br />
set NLS_LANG=american_america.AL32UTF8<br />
可以通过修改注册表键值永久设置<br />
HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOMExx\NLS_LANG</p>
<p>Unix:<br />
# 常用unicode字符集<br />
export NLS_LANG=american_america.AL32UTF8<br />
# 常用中文字符集<br />
export NLS_LANG="Simplified Chinese_china".ZHS16GBK<br />
可以编辑 bash_profile 文件进行永久设置<br />
vi .bash_profile<br />
NLS_LANG="Simplified Chinese_china".ZHS16GBK export NLS_LANG<br />
# 使 bash_profile 设置生效<br />
source .bash_profile</p>
<p>&nbsp;</p>
<p>参考：<a href="http://blog.csdn.net/wzy0623/archive/2007/07/09/1683337.aspx">http://blog.csdn.net/wzy0623/archive/2007/07/09/1683337.aspx</a></p>
  <img src ="http://www.blogjava.net/xjacker/aggbug/330325.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xjacker/" target="_blank">风萧萧兮</a> 2010-08-30 19:43 <a href="http://www.blogjava.net/xjacker/articles/NLS_LANG.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>