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需要注意的

感謝閱讀!

回到目錄


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM