how to change source file encoding in csharp project (visual studio / msbuild machine)?
Asked Answered
G

3

62

Is there a way to force VS to use Unicode always, instead of weird ISO-something?

I'm working on a winapp csproject using Visual Studio 2008 on Vista (Polish locale). The problem appears when I build the project on Win Server 2003 (English locale) - then Polish diacritic is gone.

I investigated that the issue is caused by improper source file encoding. It looks that source files aren't using UTF-8 encoding.

Gallery answered 8/5, 2009 at 14:30 Comment(0)
Y
115

Problem: Compiler launched from command line cannot process the source file because of international characters that I’ve just added.

Solution: Save source file explicitly in UTF-8 encoding to preserve international characters.

How To:

  • open the problematic file in Visual Studio.
  • on the File menu click “Advanced Save Options“
  • from “Encoding” combo select “Unicode (UTF-8 …“
  • click OK.

You’re set. Commit to please the build server and rest of the team waiting for green.

Yielding answered 8/5, 2009 at 14:32 Comment(6)
I figured it out a few moments ago. I saved one file for test using 'UTF-with-BOM' and it fixed a couple of invalid strings. Is there any setting for Visual Studio to use UTF for all sources? It's really stupid to change it manually for a few hundred files.Gallery
There is a work around however - you can get visual studio to use a different encoding by setting the computers regional settings to, say, English for example. This would in turn force VS to use 'Western European - Codepade 1252' rather than 'Unicode UTF-8 - Codepage 65001'. Again, this works in the Express edition and I'm pretty sure it will in the full application.Yielding
This workaround doesn't satisfy me. I set computer regional setting to polish on purpose so switching it is not an option. And switching to CP 1252 isn't an option too. I want to set explicitly CP65001. I spent some time for research and what I see it that VS 2008 templates are fine - they are all UTF-8 with BOM. The source of all evil are templates from sloppy coders from external components producers. Also recent release of ASP.NET MVC has this issue.Gallery
I almost get crazy when i saw those characters wrong. At least there were peaple like you saving me, tks.Agential
In Visual Studio 2017 the GUI is a bit different, you can check my answer below for details.Ardie
It would be nice if you could update your answer to explain how to do this in VS 2017+ (as seen in Ilya Chernomordik's answer). Your answer is currently the top match in Google for "visual studio change encoding" and it is confusing for anyone with a recent version of VS: imgur.com/a/yjMAMt7Roswell
A
49

In the latest Visual Studio 2017 the interface is changed a bit and you have to chose File -> Save [filename] As…. Then in the opened dialog you can chose Save with Encoding….

enter image description here

Ardie answered 12/11, 2018 at 9:28 Comment(0)
V
7

I've had the same problems with VS2015 vb.net project and solved it by adding <CodePage>1250</CodePage> marker to your vbproj/csproj file. I did it after <SchemaVersion> marker, rebuilt the project and it worked for me. I've had trouble with polish letters such as ż,ą etc. You can also try the UTF-8 - 65001 but I didn't check if it works.

Vanzandt answered 27/10, 2016 at 19:3 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.