人力资源公司注册需要什么条件,常德seo招聘,国外seo比较好的博客网站,阿里巴巴网站分类板块做全屏欢迎来到《小5讲堂》#xff0c;大家好#xff0c;我是全栈小5。 这是《Docker容器》系列文章#xff0c;每篇文章将以博主理解的角度展开讲解#xff0c; 特别是针对知识点的概念进行叙说#xff0c;大部分文章将会对这些概念进行实际例子验证#xff0c;以此达到加深对… 欢迎来到《小5讲堂》大家好我是全栈小5。 这是《Docker容器》系列文章每篇文章将以博主理解的角度展开讲解 特别是针对知识点的概念进行叙说大部分文章将会对这些概念进行实际例子验证以此达到加深对知识点的理解和掌握。 温馨提示博主能力有限理解水平有限若有不对之处望指正 目录 前言访问乱码乱码分析core方向docker方向 乱码原因解决方法 相关文章 前言
接上篇文章提到的中文乱码问题本篇文章就来讲讲如何解决这个问题。 在Docker环境中由于它默认的字符编码不是UTF-8所以导致一些非 ASCII 字符显示乱码。
访问乱码 乱码分析
core方向
刚开始以为是.net core程序里需要设置编码尝试下面代码进行解决接触新东西总要踩下坑。
app.Use((context, next)
{context.Request.Headers[Accept-Charset] utf-8; // 设置请求头部字符编码为 UTF-8context.Response.Headers[Content-Type] text/plain; charsetutf-8; // 设置响应头部字符编码为 UTF-8return next();
});更新上面代码后发现还是不行同时也查看了响应标头Content-Type是有包含utf-8编码
docker方向
在core设置编码无效后转到docker方向思考查询相关资料可以通过设置Dockerfile来设置字符编码。
关键设置
一个是有空格一个是等于号刚接触docker不久不知道是不是因为版本问题有知道的小伙伴可以评论区留言。 对于当前docker版本Docker version 24.0.7, build afdd53b使用等于号才是正确参数设置空格则无效。
错误写法ENV LANG C.UTF-8
正确写法ENV LANGC.UTF-8博主文件
#See https://aka.ms/customizecontainer to learn how to customize your debug container and how Visual Studio uses this Dockerfile to build your images for faster debugging.FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443# 设置环境变量
ENV LANGC.UTF-8FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
WORKDIR /src
COPY [WebApiDocker.csproj, .]
RUN dotnet restore ./WebApiDocker.csproj
COPY . .
WORKDIR /src/.
RUN dotnet build WebApiDocker.csproj -c Release -o /app/buildFROM build AS publish
RUN dotnet publish WebApiDocker.csproj -c Release -o /app/publish /p:UseAppHostfalseFROM base AS final
WORKDIR /app
COPY --frompublish /app/publish .
ENTRYPOINT [dotnet, WebApiDocker.dll]乱码原因
中文乱码问题通常是由于字符编码不一致或不正确引起的。
以下是可能导致中文乱码的一些常见原因
1.系统编码设置不正确 在 Docker 环境中如果没有正确设置系统的字符编码可能会导致中文乱码问题。您可以尝试在 Dockerfile 中使用 ENV LANGC.UTF-8 或 ENV LC_ALLC.UTF-8 来设置系统的字符编码为 UTF-8。
2.文件编码不兼容 如果您的应用程序使用文件作为输入或输出并且文件的编码与其他组件如数据库或浏览器所使用的编码不一致那么在读取或传输文件时可能会出现乱码。请确保所有相关文件的编码一致并且使用与其他组件兼容的编码方式如 UTF-8。
3.字符编码设置不正确 在应用程序中如果没有正确设置响应的字符编码那么在返回数据时可能会出现乱码。确保在应用程序中正确设置响应的字符编码以确保数据以正确的编码进行传输。
4.数据库编码不兼容 如果您的应用程序与数据库交互并且数据库的编码与您的应用程序所使用的编码不匹配那么在读取或写入数据库时可能会导致中文乱码。请确保在设置数据库时使用与应用程序兼容的编码并在应用程序中正确处理数据的编码。
5.编码转换错误 在处理和传输数据时如果没有正确处理编码转换操作可能会导致中文乱码。确保在数据传输过程中进行正确的编码转换以保持数据的一致性和正确性。
解决方法
Docker Core也称为 Docker Engine容器环境本身并没有特定的固定编码集。 它使用的是主机操作系统的默认编码集。 因此Docker Core 容器环境的编码集取决于所在主机操作系统的设置。 在某些情况下如果主机操作系统的默认编码集不是 UTF-8那么在容器环境中显示中文可能会遇到问题。 这是因为容器内的应用程序通常会采用 UTF-8 编码来正确处理和显示多语言文本尤其是涉及到非 ASCII 字符如中文字符时。 因此如果容器内的应用程序期望使用 UTF-8 编码来正确处理和显示中文文本那么在 Dockerfile 中设置 ENV LANGC.UTF-8 是一种常见和推荐的做法。 这个设置将确保容器运行时的默认字符编码为 UTF-8。这样应用程序在容器环境中运行时可以使用正确的编码来处理和显示中文文本。 当您设置 ENV LANGC.UTF-8 后容器内的其他组件如数据库也可能需要进行相应的设置以兼容 UTF-8 编码。
ENV LANGC.UTF-8重新上传
直接把编译后的文件拖到对应文件夹下右上角也会显示正在覆盖的文件数量
重启容器
需要重启容器否则无效果 cmddocker restart webapi自己容器名称 解决后显示效果
相关文章
【Docker】linux、nginx、容器镜像三者基本概念 【Docker】在Windows下使用Docker Desktop创建nginx容器并访问默认网站 【Docker】在Windows操作系统上安装Docker 【Docker】了解Docker Desktop桌面应用程序TA是如何管理和运行Docker容器1 【Docker】使用VS创建、运行、打包、部署.net core 6.0 webapi 总结温故而知新不同阶段重温知识点会有不一样的认识和理解博主将巩固一遍知识点并以实践方式和大家分享若能有所帮助和收获这将是博主最大的创作动力和荣幸。也期待认识更多优秀新老博主。