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

    成功

  • 相关阅读:
    .net项目的svn Global ignore pattern
    Ionic开发中常见问题和解决方案记录
    iOS开发:mac使用svn管理项目
    iOS开发:本地数据存储-NSUserDefaults
    iOS开发:插件记录
    iOS开发:告诉git不要跟踪UserInterfaceState.xcuserstate
    发布 windows 10 universal app 时微软账号验证失败
    iOS开发:UINavigationController常用操作
    iOS开发:Swift多线程NSOperation的使用
    iOS开发:Swift多线程GCD的使用
  • 原文地址:https://www.cnblogs.com/jiangfeilong/p/10926609.html
Copyright © 2011-2022 走看看