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.

Ryan Gates
  • 4,501
  • 6
  • 50
  • 90
tomo
  • 1,942
  • 2
  • 29
  • 43

3 Answers3

114

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.

Christian Gollhardt
  • 16,510
  • 17
  • 74
  • 111
ruslander
  • 3,815
  • 4
  • 32
  • 34
  • 5
    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. – tomo May 08 '09 at 14:47
  • 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. – ruslander May 13 '09 at 19:09
  • 5
    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. – tomo May 15 '09 at 13:30
  • 1
    I almost get crazy when i saw those characters wrong. At least there were peaple like you saving me, tks. – Bruno Gomes Mar 17 '15 at 13:54
  • 2
    In Visual Studio 2017 the GUI is a bit different, you can check my answer below for details. – Ilya Chernomordik Nov 12 '18 at 09:29
  • 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: https://imgur.com/a/yjMAMt7 – JLRishe Nov 06 '20 at 06:12
46

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

Ilya Chernomordik
  • 27,817
  • 27
  • 121
  • 207
6

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.

Ania
  • 61
  • 1
  • 2