2017-02-08 1 views
0

J'ai une nouvelle installation de PostgreSQL (9.6.1) en utilisant le programme d'installation Big SQL, et une nouvelle installation de Npgsql (3.2.0) en utilisant le programme d'installation .msi, mais non ASCII le soutien du personnage semble être brisé.Encodage = ASCII; et Encodage = UNICODE; ne fonctionne pas dans une chaîne de connexion Npgsql 3

Ma chaîne de connexion est:

<add name="Northwind" connectionString="Database=Northwind;Server=localhost;Port=5432;User Id=postgres;Password=123;Encoding=ASCII;" providerName="Npgsql"/> 

Je reçois des messages d'exception comme celui-ci, lors de la lecture de retour des données de caractères non-ASCII:

System.Text.DecoderFallbackException : Unable to translate bytes [C3] at index 22 from specified code page to Unicode. 

J'ai essayé d'utiliser à la place Encoding=UNICODE;, mais ni travaux.

Répondre

2

Vous avez probablement une ancienne chaîne de connexion Npgsql. Encoding=ASCII ou Encoding=UNICODE ne fonctionnera plus si vous utilisez Npgsql (3.2.0) pour accéder à PostgreSQL (9.6.1).

Solution: il suffit de supprimer Encoding=xxx complètement et tout fonctionne!

Vous n'avez pas besoin de 'réparer' vos encodages et paramètres régionaux Postgres, vous n'avez pas besoin d'essayer de trouver une valeur Encoding à utiliser dans la chaîne de connexion; Ngpsql 3 fonctionne simplement sans paramètre Encoding, par rapport aux paramètres d'installation par défaut de Postgres sur Windows (Encoding=UTF8 | Collate=English_United Kingdom.1252 | Ctype=English_United Kingdom.1252) (pour le Royaume-Uni, mais je crois que la même chose s'applique pour English_United States.1252 pour les États-Unis et d'autres paramètres régionaux).

(Voir: https://github.com/npgsql/npgsql/issues/1396)