LindDotNetCore~docker裡影象上生成中文亂碼問題
阿新 • • 發佈:2018-12-30
因為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-getclean && 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作業系統支援的中文字型,你在影象上輸出中文時,需要使用上面的字型!
感謝閱讀!