• 版本记录

2019.4.26日 第一版

问题描述

公司的java项目中使用了openoffice和pdf2html对文件进行格式转换,word,ppt,pdf文件都转换没有问题,唯独excel转换后显示乱码

背景介绍

项目在Docker容器中运行,Docker版本:Docker version 18.06.1-ce, build e68fc7a

容器系统的内核版本:3.10.0-514.el7.x86_64

容器系统的发型版本:Cent0S7

故障原因

和架构沟通过后知道了word,pdf,ppt文件是通过openoffice和pdf2html配合转换的,但excel文件却没有这样处理,而是用了网上开源的java代码实现的,架构看了代码后发现在转换excel文件的时候这段代码读取了宿主系统的语言配置,所以确定了问题的原因就是系统字符编码设置。

解决方法

查看系统字符编码没问题(注意前三行),看来字符集设置正确。排查一下前三行的问题,网上说是没有安装中文字符集导致的

[root@4273aa460888 opt]# localelocale: Cannot set LC_CTYPE to default locale: No such file or directorylocale: Cannot set LC_MESSAGES to default locale: No such file or directorylocale: Cannot set LC_ALL to default locale: No such file or directoryLANG=zh_CN.UTF-8LC_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=    

我们看一本机都安装了哪些字符集,我擦,果然没有安装中文字符集.....(没有安装就算你设置了也没用)

[root@4273aa460888 opt]# locale -alocale: Cannot set LC_CTYPE to default locale: No such file or directorylocale: Cannot set LC_MESSAGES to default locale: No such file or directorylocale: Cannot set LC_COLLATE to default locale: No such file or directoryCPOSIXen_US.utf8

再看一下/etc/locale.conf的内容,干,还是英文字符集......

[root@4273aa460888 opt]# cat /etc/locale.conf LANG="en_US.UTF-8"

好,我们接下来安装一下中文字符集

删除yum.conf文件中的语言配置sed -i '13'd /etc/yum.conf安装字体和glibcyum install -y kde-l10n-Chinese glibc-common

我们再看一下,终于有了

[root@35b0e9b16498 opt]# locale -a|grep zhzh_CNzh_CN.gb18030zh_CN.gb2312zh_CN.gbkzh_CN.utf8zh_HKzh_HK.big5hkscszh_HK.utf8zh_SGzh_SG.gb2312zh_SG.gbkzh_SG.utf8zh_TWzh_TW.big5zh_TW.euctwzh_TW.utf8

我们再修改一下/etc/locale.conf文件

echo -e 'export LANG="zh_CN.UTF-8"\nexport LC_ALL="zh_CN.UTF-8"' > /etc/locale.confsource /etc/locale.conf

我们再看一下字符编码,好了,没有报错,且一切正常。

[root@35b0e9b16498 opt]# localeLANG=zh_CN.UTF-8LC_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=zh_CN.UTF-8

补充信息

知识扩展

转载于:https://blog.51cto.com/wangxiaoke/2385413

修改Docker容器字符编码为-zh_CN.UTF-8中文字符集相关推荐

  1. docker配置容器mysql启动参数_修改Docker容器启动配置参数

    有时候,我们创建容器时忘了添加参数 --restart=always ,当 Docker 重启时,容器未能自动启动, 现在要添加该参数怎么办呢,方法有二: 1.Docker 命令修改 docker c ...

  2. 修改数据库mysql字符编码为UTF8

    修改数据库mysql字符编码为UTF8 Mysql数据库是一个开源的数据库,应用非常广泛.以下是修改mysql数据库的字符编码的操作过程.步骤1:查看当前的字符编码方法 mysql> show ...

  3. MySQL常见问题的解决,root用户密码忘记,不是内部或外部命令,修改数据库和表的字符编码,命令行客户端的字符集问题

    文章目录 问题1:root用户密码忘记,重置的操作 问题2:mysql命令报"不是内部或外部命令" 问题3:错误ERROR :没有选择数据库就操作表格和数据 问题4:命令行客户端的 ...

  4. Docker(十七)-修改Docker容器启动配置参数

    有时候,我们创建容器时忘了添加参数 --restart=always ,当 Docker 重启时,容器未能自动启动, 现在要添加该参数怎么办呢,方法有二: 1.Docker 命令修改 docker c ...

  5. docker 镜像修改的配置文件自动还原_所以到底该如何修改 docker 容器的端口映射!!!...

    |问题背景 docker 创建容器时,指定了端口映射(-p) 如果容器运行之后发现端口需要改怎么办? 当前是访问 9999 端口 |删除原有容器,重新创建新的容器 |删除容器 docker |重新创建 ...

  6. mysql如何字符编码,如何修改MYSQL的字符编码

    如何修改MYSQL的字符编码 查看字符集设置 mysql> show variables like 'collation_%'; +----------------------+-------- ...

  7. 修改docker容器中的文件方法

    修改docker容器配置文件方法 昨天准备修改docker容器中的配置文件,由于是xml配置文件,不需要编译,想着直接编辑一下就ok了,但是进入容器发现竟然没有vi命令,一番查找,可以使用以下方法 1 ...

  8. linux修改容器内的mysql端口映射_修改docker容器端口映射的方法

    大家都知道docker run可以指定端口映射,但是容器一旦生成,就没有一个命令可以直接修改.通常间接的办法是,保存镜像,再创建一个新的容器,在创建时指定新的端口映射. 有没有办法不保存镜像而直接修改 ...

  9. Linux怎么查询全部容器时间,linuxea:如何单单修改docker容器的系统时间

    一般情况下,我们仅仅需要修改容器的时间与我们宿主机的实际实际一致即可, 我们知道,默认情况下docker容器是不允许访问系统时钟,但是有一款开源的软件使这样的需求变成了可能.此lib拦截用于检索当前时 ...

最新文章

  1. Could not load file or assembly App_Licenses.dll的问题
  2. Java及Android开发环境搭建
  3. 笔记 - Ali Cloud网络(VPC, SLB) 简介
  4. 高并发学习(二)安全发布对象/不可变对象/线程封闭
  5. 延迟分析中的案例研究:锁定与同步
  6. ssm框架下 tiles框架 的使用
  7. ServletContext读取图片
  8. BZOJ4868: [Shoi2017]期末考试
  9. 解决在使用CSS3制作不间断轮播图中 收尾连接后Interval 延时问题
  10. 经典书单 —— 机器学习/深度学习/AI/CV/PGM
  11. Android Handler.post(Runnable r)再一次梳理Android的消息机制(以及handler的内存泄露)
  12. 移动端webview canvas bug
  13. 地理中经纬度的英文名称
  14. 涨见识!Java String转int还有这种写法
  15. java替换图片文字_Java 替换PPT文档中的文本和图片
  16. 小程序源码:团长头像制作小程序
  17. MAC苹果电脑关闭系统完整性保护SIP(System Integrity Protection)
  18. c++控制台密码管理系统
  19. 怎么做读书分享PPT课件?
  20. 华星充电:什么是新能源充电桩

热门文章

  1. 《软件构架实践》阅读笔记三
  2. CodeWarrior 初探(1) USBDM 芯片检测
  3. Ubuntu怎么用c/c++编程
  4. 【python初识】列表与函数模块
  5. ROS学习(九):ROS URDF-link
  6. Java 生成有序 UUID
  7. 然并卵:BF 科普 BF 解释器的 JS 实现
  8. 杭电 2111 Saving HDU (贪心)
  9. (五)WebRTC手记Channel概念
  10. centos7系统/etc/resolv.conf 配置DNS客户