LindDotNetCore~docker里图像上生成中文乱码问题

回到目录

因为docker上的大部分镜像都是基于linux系统的,所以在向图像中写中文时需要考虑中文字体问题,例如在microsoft/aspnetcore2.0这个镜像,它是基于debian系统的,它上面只有一个英文字体,所以在输出中文时会出现乱码,这是正常的,我们的解决方案也需要按着以下步骤即可!

问题表现

  1. linux系统上
  2. docker容器上
  3. dotnetcore System.Drawing输出文字上

解决思路

  1. dockerfile里动态安装中文字体,激活字体
  2. dotnetcore里使用新添加的字体,网上介绍很多的是文泉驿正黑,注意它的名字,不要写错,也可以使用字母名称WenQuanYi Zen Hei,注意它有空格的
  3. docker build --no-cache . 运行你的dockerfile生成新的镜像,docker run你的镜像即可

具体代码

一 dockerfile里动态添加字体和刷新

FROM microsoft/aspnetcore:2.0
WORKDIR /app
EXPOSE 80
RUN ls
COPY  publish  .
COPY sources.list /etc/apt/sources.list
RUN apt-get update && apt-get -y install libgdiplus 
RUN apt-get -y install fonts-wqy-zenhei && apt-get clean &&  fc-cache -fv
ENTRYPOINT ["dotnet", "FileUpload.dll"]

二 在System.Drawing里生产中文字体

Font fTitle = new Font("文泉驿正黑", 16);
Font fText = new Font("WenQuanYi Zen Hei", 9);

三 同时可以进入容器,查看已经安装过的中文字体

 fc-list :lang=zh //:号前面有空格 

事实上,通过显示的就是当前容器所在的linux操作系统支持的中文字体,你在图像上输出中文时,需要使用上面的字体!

对dotnetcore上的System.Drawing环境搭建可以查看我的这篇文章:DotNetCore跨平台~System.DrawingCore部署Linux需要注意的

四 安装fc-list命令

`fc-list`命令通常是通过安装Fontconfig软件包来获得的,这个软件包提供了用于管理字体的工具和库。在大多数Linux发行版中,Fontconfig已经预先安装了,因此你可以直接使用`fc-list`命令。

如果你的系统中没有安装Fontconfig或者找不到`fc-list`命令,你可以尝试通过包管理器安装Fontconfig软件包。以下是一些常见的Linux发行版上安装Fontconfig的方法:

对于Debian/Ubuntu系统,你可以使用apt包管理器进行安装:
```bash
sudo apt-get install fontconfig
```

对于CentOS/RHEL系统,你可以使用yum包管理器进行安装:
```bash
sudo yum install fontconfig
```

对于Fedora系统,你可以使用dnf包管理器进行安装:
```bash
sudo dnf install fontconfig
```

安装完成后,你就可以使用`fc-list`命令来列出系统中的字体列表了。希望这能帮助到你顺利安装`fc-list`命令!

 感谢阅读!

回到目录

posted @ 2018-01-26 10:14  张占岭  阅读(1949)  评论(0编辑  收藏  举报