1. 程式人生 > >LindDotNetCore~docker裡影象上生成中文亂碼問題

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作業系統支援的中文字型,你在影象上輸出中文時,需要使用上面的字型!

感謝閱讀!

回到目錄