LindDotNetCore~docker里图像上生成中文乱码问题
因为docker上的大部分镜像都是基于linux系统的,所以在向图像中写中文时需要考虑中文字体问题,例如在microsoft/aspnetcore2.0这个镜像,它是基于debian系统的,它上面只有一个英文字体,所以在输出中文时会出现乱码,这是正常的,我们的解决方案也需要按着以下步骤即可!
问题表现
- linux系统上
- docker容器上
- dotnetcore System.Drawing输出文字上
解决思路
- dockerfile里动态安装中文字体,激活字体
- dotnetcore里使用新添加的字体,网上介绍很多的是文泉驿正黑,注意它的名字,不要写错,也可以使用字母名称WenQuanYi Zen Hei,注意它有空格的
- 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命令
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | `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`命令! |
感谢阅读!
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
· 【.NET】调用本地 Deepseek 模型
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
2016-01-26 大叔也学Xamarin系列
2016-01-26 WebApi系列~dynamic让你的省了很多临时类
2015-01-26 FastSocket学习笔记~RPC的思想,面向对象的灵活