.NET项目Windows编译正常,Linux容器因特殊字符报CS1056错误求解
.NET项目跨平台编译特殊字符问题咨询
我们的.NET项目在Windows环境编译完全正常,但在Linux容器中编译时,Ä、Ö、Ü等特殊字符无法被识别,触发如下错误:
error CS1056: Unexpected character '�'
目前找到的临时解决办法是:将受影响文件通过「另存为」→「编码保存」→「带签名的UTF-8」重新保存,但手动处理整个项目耗时巨大。我们考虑编写PowerShell脚本自动化该操作,但担忧Linux环境下Visual Studio会忽略部分变量或配置。
现咨询:如何有效且可持续地解决此问题?最佳实践是什么?
以下是我们已尝试但无效的方案:
- 构建时使用项目参数:
dotnet publish "formularserver_NET8_Linux.sln" --no-restore -c Release -o /app/publish -p:TargetFramework=net8.0 -p:CodePage=65001 dotnet publish "formularserver_NET8_Linux.sln" --no-restore -c Release -o /app/publish -p:TargetFramework=net8.0 -p:OutputEncoding=utf-8 - 修改Directory.Build.props文件:
<?xml version="1.0" encoding="utf-8"?> <Project> <PropertyGroup> <!-- Set the code page to UTF-8 --> <CodePage>65001</CodePage> </PropertyGroup> </Project> - 修改项目文件:
<PropertyGroup> <GenerateRuntimeConfigurationFiles>true</GenerateRuntimeConfigurationFiles> <OutputEncoding>utf-8</OutputEncoding> <!-- Ensures console output uses UTF-8 --> </PropertyGroup> - 应用启动时添加代码修改:
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); Console.OutputEncoding = Encoding.UTF8; - 设置全球化支持环境变量:
export DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=false - 配置VS Code的settings.json:
"files.encoding": "utf8"
内容的提问来源于stack exchange,提问作者BilalMr
相关产品推荐
相关产品推荐

