Linux乱码和数据库乱码的问题简单排查

发表于:2014-9-03 09:57

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:jeanron100    来源:51Testing软件测试网采编

  在本地的虚拟机环境一直凑合着用英文,今天想看看中文的东西都显示乱码,下定决心要把问题解决了。
  如果直接打印文本内容,通过putty也会显示乱码。
  [ora11g@rac1 ~]$ cat aa.sh
  δ? ε??ο?θ?ζ―δ?δ??ζ?θ―
  [ora11g@rac1 ~]$
  这个时候很可能是putty的编码转换的问题,通过查看putty的设置,如上,可以看到应该选为utf-8。
  选为UTF-8以后,重新打印,就没有问题了。
  [ora11g@rac1 ~]$ cat aa.sh
  你好,这是一个测试
  第一个问题解决了,第二个问题又来了,来看看数据库层面的乱码问题。
  [ora11g@rac1 ~]$ sqlplus n1/n1
  SQL> select *from test;
  ID NAME
  ---------- -----------------------------
  1 ??????
  这个时候看看环境变量NLS_LANG的设置,如果为空,很可能会出问题。
  [ora11g@rac1 ~]$ echo $NLS_LANG
  [ora11g@rac1 ~]$
  简单设置一下,这个最好和数据库层面的字符集要一致。
  [ora11g@rac1 ~]$ echo $NLS_LANG
  american_america.AL32UTF8
  再来查看一下,就没有问题了。
  SQL> select *from test;
  ID NAME
  ---------- -----------------------------
  1 突破玩法界限
  当然了,我的这个问题刚好数据库层面是完全支持的,这样就省去了很多额外的工作,如果数据库层面的字符集不支持,那很可能就得重建库来改变字符集了。
select *from nls_database_parameters
SQL> /
PARAMETER                      VALUE
------------------------------ ----------------------------------------
NLS_LANGUAGE                   AMERICAN
NLS_TERRITORY                  AMERICA
NLS_CURRENCY                   $
NLS_ISO_CURRENCY               AMERICA
NLS_NUMERIC_CHARACTERS         .,
NLS_CHARACTERSET               AL32UTF8
NLS_CALENDAR                   GREGORIAN
NLS_DATE_FORMAT                DD-MON-RR
NLS_DATE_LANGUAGE              AMERICAN
NLS_SORT                       BINARY
NLS_TIME_FORMAT                HH.MI.SSXFF AM
NLS_TIMESTAMP_FORMAT           DD-MON-RR HH.MI.SSXFF AM
NLS_TIME_TZ_FORMAT             HH.MI.SSXFF AM TZR
NLS_TIMESTAMP_TZ_FORMAT        DD-MON-RR HH.MI.SSXFF AM TZR
NLS_DUAL_CURRENCY              $
NLS_COMP                       BINARY
NLS_LENGTH_SEMANTICS           BYTE
NLS_NCHAR_CONV_EXCP            FALSE
NLS_NCHAR_CHARACTERSET         AL16UTF16
NLS_RDBMS_VERSION              11.2.0.3.0
21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号