zoukankan      html  css  js  c++  java
  • oracle 数据库插入中文乱码

    一.

    查询数据库编码

    select userenv('language') from dual;

    查询服务器编码

    select * from v$nls_parameters;

    推出sql查询系统编码

    root@f096e625bcd3:/# locale
    LANG=
    LANGUAGE=
    LC_CTYPE="POSIX"
    LC_NUMERIC="POSIX"
    LC_TIME="POSIX"
    LC_COLLATE="POSIX"
    LC_MONETARY="POSIX"
    LC_MESSAGES="POSIX"
    LC_PAPER="POSIX"
    LC_NAME="POSIX"
    LC_ADDRESS="POSIX"
    LC_TELEPHONE="POSIX"
    LC_MEASUREMENT="POSIX"
    LC_IDENTIFICATION="POSIX"
    LC_ALL=

    可以看到当前编码格式为POSIX,而这种编码格式不支持中文

      解决办法:locale -a查看容器所有语言环境

      

    使用locale -a 查看当前可用的字符集,这里我们看到有C.UTF-8和zn_CN.UTF-8,这两种字符集都支持中文。如果当前不存在zn_CN.UTF-8,可以使用sudo apt-get -y install language-pack-zh-hans进行安装。

    sudo apt-get -y install language-pack-zh-hans

     C.UTF-8可以支持中文,只需要把容器编码设置为C.UTF-8即可

        1.临时修改:

         export LANG=zh_CN.UTF-8

    root@f096e625bcd3:/#  export LANG=zh_CN.UTF-8
    root@f096e625bcd3:/# locale
    LANG=zh_CN.UTF-8
    LANGUAGE=
    LC_CTYPE="zh_CN.UTF-8"
    LC_NUMERIC="zh_CN.UTF-8"
    LC_TIME="zh_CN.UTF-8"
    LC_COLLATE="zh_CN.UTF-8"
    LC_MONETARY="zh_CN.UTF-8"
    LC_MESSAGES="zh_CN.UTF-8"
    LC_PAPER="zh_CN.UTF-8"
    LC_NAME="zh_CN.UTF-8"
    LC_ADDRESS="zh_CN.UTF-8"
    LC_TELEPHONE="zh_CN.UTF-8"
    LC_MEASUREMENT="zh_CN.UTF-8"
    LC_IDENTIFICATION="zh_CN.UTF-8"
    LC_ALL=

        2.永久修改:修改Dockerfile

          在Dockerfile中添加一行

          ENV LANG C.UTF-8

          重新制作docker镜像,docker run -ti [镜像] 进入容器后执行locale发现编码格式已经被修改为C.UTF-8,之前出现的中文文件名乱码问题也没有了。

      三. 修改oracle 编码

    1.查看当前数据库编码

    select userenv('language') from dual;
    SQL> select userenv('language') from dual;
    
    USERENV('LANGUAGE')
    ----------------------------------------------------
    AMERICAN_AMERICA.AL32UTF8

    2.查看系统 NLS_LANG

    echo $NLS_LANG

    设置NLS_LANG

    export NLS_LANG=AMERICAN_AMERICA.AL32UTF8

    成功

  • 相关阅读:
    自定义异常
    finally关键字
    捕捉异常try-catch
    throws抛出异常
    exception概述和分类
    jvm前奏篇
    Java并发编程学习随笔 (一) 使用run() 和 start()的差别
    MyCat学习 ------分库分表 随笔
    java最常用的内置工具类
    Mybatis框架常见面试题
  • 原文地址:https://www.cnblogs.com/jiangfeilong/p/10926609.html
Copyright © 2011-2022 走看看