zoukankan      html  css  js  c++  java
  • 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需要注意的

    感谢阅读!

    回到目录

  • 相关阅读:
    运输层:广播和多播
    ICMP:internet控制报文协议 PING
    traceroute 命令
    网络层:IP网际协议 ifconfig -a
    IP层:IP选路
    动态选路协议
    链路层:ARP和RARP命令arp -a/tcpdump -en
    链路层协议以及常用命令介绍netstat
    TCP/IP笔记
    0-1背包问题——回溯法
  • 原文地址:https://www.cnblogs.com/lori/p/8358285.html
Copyright © 2011-2022 走看看