64

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.

3 Answers 3

117

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.

Sign up to request clarification or add additional context in comments.

6 Comments

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.
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.
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.
I almost get crazy when i saw those characters wrong. At least there were peaple like you saving me, tks.
In Visual Studio 2017 the GUI is a bit different, you can check my answer below for details.
|
52

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

1 Comment

At first it is not obvious that you can pick the encoding. It says the file already exists - do you want to overwrite it. People are used to clicking Yes and be done with saving it, so it creates the impression that it won't even ask what encoding it will use once you click Yes. But, luckily, the next dialog lets you change the encoding.
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.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.