2009-05-08 10 views
41

¿Hay alguna manera de obligar a VS a usar Unicode siempre, en lugar de algo raro de ISO?cómo cambiar la codificación del archivo fuente en el proyecto csharp (máquina visual studio/msbuild)?

Estoy trabajando en un proyecto de winapp csproject usando Visual Studio 2008 en Vista (configuración regional polaca). El problema aparece cuando construyo el proyecto en Win Server 2003 (configuración regional en inglés); luego, el diacrítico polaco desaparece.

Investigué que el problema se debe a una codificación incorrecta del archivo de origen. Parece que los archivos fuente no están usando la codificación UTF-8.

Respuesta

91

Problema: El compilador iniciado desde la línea de comandos no puede procesar el archivo fuente debido a los caracteres internacionales que acabo de agregar.

Solución: Guarde el archivo de origen explícitamente en la codificación UTF-8 para conservar caracteres internacionales.

Cómo:

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

ya está. Comprométase a complacer al servidor de compilación y al resto del equipo que espera el color verde.

+3

Lo descubrí hace unos momentos. Guardé un archivo para probar usando 'UTF-with-BOM' y solucionó un par de cadenas inválidas. ¿Hay alguna opción para que Visual Studio use UTF para todas las fuentes? Es realmente estúpido cambiarlo manualmente por unos pocos cientos de archivos. – tomo

+0

Sin embargo, hay un problema: puede hacer que Visual Studio use una codificación diferente configurando las configuraciones regionales de las computadoras en, por ejemplo, inglés, por ejemplo. Esto a su vez obligaría a VS a usar 'Western European - Codepade 1252' en lugar de 'Unicode UTF-8 - Codepage 65001'. De nuevo, esto funciona en la edición Express y estoy bastante seguro de que lo hará en la aplicación completa. – ruslander

+4

Esta solución no me satisface. Establecí la configuración regional de la computadora para pulir a propósito, por lo que cambiarla no es una opción. Y cambiar a CP 1252 tampoco es una opción. Quiero configurar explícitamente CP65001. Pasé algún tiempo investigando y lo que veo es que las plantillas VS 2008 están bien, todas son UTF-8 con BOM. La fuente de todo mal son las plantillas de codificadores descuidados de los productores de componentes externos. También el lanzamiento reciente de ASP.NET MVC tiene este problema. – tomo

1

Tuve los mismos problemas con el proyecto VS2015 vb.net y lo resolví agregando el marcador <CodePage>1250</CodePage> al archivo vbproj/csproj. Lo hice después del marcador <SchemaVersion>, reconstruí el proyecto y funcionó para mí. He tenido problemas con las letras polacas como ż, ± etc. También puede probar el UTF-8 - 65001 pero no verifiqué si funciona.

Cuestiones relacionadas