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

简介:
在本地的虚拟机环境一直凑合着用英文,今天想看看中文的东西都显示乱码,下定决心要把问题解决了。
  如果直接打印文本内容,通过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
另外系统层面的乱码,网上查看了一下,有些人建议修改/etc/sysconfig/i18n的设置。
  [ora11g@rac1 ~]$ cat /etc/sysconfig/i18*
  LANG="en_US.UTF-8"
  SYSFONT="latarcyrheb-sun16"
  如果修改为中文的,一定要注意设置的值,在我本地做测试,是不需要修改的,本身就支持,我修改的时候,竟然改错了,结果重新登录及报了一大堆的错误,如下:
  [ora11g@rac1 caipiao]$ su - ora11g
  Password:
  -bash: warning: setlocale: LC_CTYPE: cannot change locale (zn_CN.UTF-8): No such file or directory
  -bash: warning: setlocale: LC_COLLATE: cannot change locale (zn_CN.UTF-8): No such file or directory
  -bash: warning: setlocale: LC_MESSAGES: cannot change locale (zn_CN.UTF-8): No such file or directory
  -bash: warning: setlocale: LC_NUMERIC: cannot change locale (zn_CN.UTF-8): No such file or directory
  -bash: warning: setlocale: LC_TIME: cannot change locale (zn_CN.UTF-8): No such file or directory
  如果修改,应该改为zh_CN,算是一个低级错误。

最新内容请见作者的GitHub页:http://qaseven.github.io/
相关文章
|
19小时前
|
Linux 数据库
Linux安装达梦数据库达梦数据
Linux安装达梦数据库达梦数据
3 0
|
1天前
|
SQL 存储 监控
达梦数据库死锁排查与解决
达梦数据库死锁排查与解决
6 0
|
2天前
|
存储 关系型数据库 分布式数据库
PolarDB产品使用问题之如何避免在修改数据库的编码格式时出现乱码状况
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
4天前
|
SQL 关系型数据库 MySQL
✅难得真实的生产数据库死锁问题排查过程
在MySQL 5.7的InnoDB环境中,一个生产问题涉及死锁,发生在更新`fund_transfer_stream`表时。死锁由两个并发事务引起,各自持有不同索引的锁并等待对方释放。事务1持有`idx_seller_transNo`索引锁,等待`PRIMARY`索引锁;事务2相反。问题源于`fund_transfer_order_no`的前20位相同导致的索引冲突,而这是非唯一索引。解决方法包括调整索引前缀长度或确保所有更新通过主键ID进行。死锁排查需查看执行计划和死锁日志,理解MySQL的加锁机制。
✅难得真实的生产数据库死锁问题排查过程
|
10天前
|
存储 关系型数据库 MySQL
MySQL数据库进阶第一篇(存储引擎与Linux系统上安装MySQL数据库)
MySQL数据库进阶第一篇(存储引擎与Linux系统上安装MySQL数据库)
|
20天前
|
SQL Oracle 关系型数据库
探索 Linux 命令 `db_archive`:Oracle 数据库归档日志的工具
探索 Linux 中的 `db_archive`,实际与 Oracle 数据库归档日志管理相关。在 Oracle 中,归档日志用于恢复,当在线重做日志满时自动归档。管理员可使用 SQL*Plus 查看归档模式,通过 `RMAN` 进行备份和恢复操作。管理归档日志需谨慎,避免数据丢失。了解归档管理对 Oracle 管理员至关重要,确保故障时能快速恢复数据库。
|
20天前
|
数据可视化 Linux 数据库
探索 Linux 命令 `db_tuner`:优化数据库性能的利器
`db_tuner` 是一个假设的 Linux 工具,用于数据库性能优化,提供状态检查、查询分析、配置调优、索引建议及报告生成等功能。虽然不是真实命令,但类似工具如 `mysqltuner` 可实现这些功能。通过安装和运行 `db_tuner`,DBA 可以提升数据库性能,解决瓶颈问题。
|
20天前
|
Oracle 关系型数据库 MySQL
深入了解 Linux 命令 `db_stat`:数据库统计信息的获取
本文模拟了 Linux 环境下使用 `db_stat` 命令获取数据库统计信息的场景,实际上`db_stat`是特定数据库系统的自定义工具。文章通过示例展示了如何针对Oracle、PostgreSQL和MySQL使用各自内置命令收集统计信息,强调了权限、性能影响和数据实时性等因素,并指出这些信息对优化数据库管理至关重要。
|
20天前
|
存储 关系型数据库 Linux
探索 `db_printlog`:Linux 下的数据库日志打印工具
`db_printlog`是Linux下用于解析和打印Berkeley DB日志文件的命令行工具,帮助用户以可读格式理解数据库事务和系统事件。要使用它,先安装Berkeley DB,然后通过`db_printlog logfilename`命令分析日志。常见选项包括`-h`(显示帮助)、`-v`(详细输出)和`-f`(跟随日志更新)。注意日志文件权限和大小问题,此工具适用于Berkeley DB,其他数据库系统可能有不同解析工具。
|
20天前
|
存储 缓存 Linux
深入理解Linux中的`db_load`命令:数据库加载的利器
`db_load`是Linux下处理Berkeley DB的关键命令,用于将文本数据加载到数据库中。它支持多种文本格式,如键值对和CSV,并具有灵活的选项,如指定数据库类型、缓存大小、日志记录和错误处理。通过`-f`加载文本文件,`-s`设定数据库类型,`-l`设置缓存。本文详细介绍了`db_load`的使用方法和高级特性,并给出案例,如将CSV用户信息加载到Btree数据库。了解并善用`db_load`能提升数据处理效率和安全性。

热门文章

最新文章