67 votes

Visual Studio insère des caractères non valides dans des fichiers de commandes.

J'ai quelques fichiers batch que j'utilise pour aider à automatiser le processus de création et de rechargement de développement de bases de données. Il est logique de créer et de maintenir ces fichiers de commandes de Visual Studio (c'est à dire, dans un VS projet de Base de données). Elles ont l'air plutôt simple, comme ceci:

@echo off
echo Setting server and db from defaults.
set SERVERNAME=(LOCAL)
set DB=PLEDGES
echo Creating tables on server %SERVERNAME% and database %DB%
sqlcmd -S %SERVERNAME% -d %DB% -E -i DropAllTables.sql
sqlcmd -S %SERVERNAME% -d %DB% -E -i dbo.UserType.Table.sql
sqlcmd -S %SERVERNAME% -d %DB% -E -i dbo.RegisteredUser.Table.sql
echo Done creating tables.

Le problème est que quand je lance, c'est la sortie:

C:\>
'' is not recognized as an internal or external command,
operable program or batch file.
Creating tables on server (LOCAL) and database PLEDGES
Done creating tables.

En d'autres termes, Visual Studio est en quelque sorte invisible de l'insertion d'un ensemble de caractères que l'interpréteur de commandes Windows est à interpréter comme une commande, c'est à dire, " ∩ ğ┐". Une recherche sur Google n'a rien retourné sur ce. Quelqu'un d'autre a rencontré ce? Réflexions sur un correctif?

J'ai une solution de contournement (il suffit d'ajouter une ligne vide au début de chaque fichier, et il va montrer l'erreur, mais sinon beau travail), mais l'anal-rétentif côté de moi reçoit ennuyé à chaque fois que je lance l'une de ces fichiers.

77voto

jadusty Points 548

Ray a raison quand il dit que Visual Studio format par défaut pour le texte est quelque chose comme de l'UTF-8. Bien que Notepad++ est un outil formidable et je l'utilise moi-même, il y a une alternative que vous pouvez indiquer à Visual Studio pour stocker votre fichier texte au format ASCII:

Dans VS2008, sélectionnez votre fichier dans l'explorateur de solutions et sélectionnez Fichier " Enregistrer myfile.chauve-souris...

Sur la flèche vers le bas sur le bouton Enregistrer, choisissez Enregistrer avec le Codage.

Lors de l'enregistrement dans les Options d'enregistrement Avancées boîte de dialogue, Choisissez US-ASCII dans la liste déroulante Codage. Définir les fins de lignes que nécessaire, ou le laisser tel Paramètre Actuel.

55voto

Ray Hayes Points 9819

Ce qui se passe est que VisualStudio est intelligent et vous cacher du fait que votre lot de fichier a été sauvegardé dans un non-ASCII codage de caractères (par exemple, votre fichier est en UTF-8 ou d'une autre non-codage ASCII).

Mon équipe de projet a été pris un peu de temps par ce problème (si les fichiers sont archivés dans le CVS, il rend les fichiers d'un mess).

J'ai tendance à utiliser Notepad++, regardez l'encodage en bas à droite (il faut dire que c'est la norme ANSI), si vous avez besoin de le changer dans le menu format et de modifier le type puis sur enregistrer.

Visual Studio devrait être identiques, mais la taille du fichier doit avoir réduit de moitié!

7voto

shapr Points 1252

La réponse de Ray est la bonne réponse. Plus précisément, Visual Studio place une marque d'ordre d'octet au début des fichiers contenant des caractères non-ANSI et, autant que je sache, cela en fait la première partie de chaque fichier XML.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X