2011-02-17 3 views
0

J'ai une chaîne provenant d'une ancienne base de données de codage de caractères inconnu. J'ai du mal à encoder/filtrer la chaîne pour montrer le texte correct.Lecture de caractères à partir d'un codage de caractères inconnu

Ce que les données ressemble dans la base de données: Marronnière à casseroles
Quatre- Ce que nous avons besoin de la chaîne pour apparaître comme: casseroles Marronnière à Quatre-

Plus précisément, je ne parviens pas à analyse de la chaîne alors je peut afficher le caractère à (à)

Ceci est un site asp.Net 2.0 écrit en VB en utilisant une base de données Sql Server 2005. Je ne sais pas si c'est important, mais les données proviennent d'une colonne avec ce classement: SQL_Latin1_General_CP1_CI_AS

J'ai essayé d'encoder la chaîne à divers encodages dans le code en vain. J'ai également passé la chaîne (codée de différentes manières) dans un tableau d'octets pour trouver un modèle d'octet unique pour les mauvais caractères sans succès.

Toute idée ou avance serait grandement appréciée, merci.

Répondre

1

Il semble que le classement dans la base de données SQL Server ne correspond pas à l'encodage de caractères qui a été effectivement utilisé :(C'est une erreur assez commune pour les développeurs imprudents.

C'est pourquoi les outils d'administration SQL Server montrent des étranges caractères plutôt que les chaînes que vous attendez.

Peut-être est UTF-8? UTF-8 à est représenté par les octets 0xC3 0xA8, qui serait interprété sous la page de code Windows latin-1 è. Je sais rien sur les classements SQL Server, mais il semble probable que SQL_Latin1_CP1_CI_AS est similaire à Windows "Latin-1 ".

Vous devez soit

  • fixer le codage lors de la lecture de la base de données. Laide et confuse pour la prochaine victime pauvre qui doit traiter avec cette base de données et code.
  • ou, mieux, de corriger les données dans la base de données afin qu'elles correspondent au classement. Vous souhaiterez peut-être modifier le classement en UTF-8 ou UTF-16: vous devrez également modifier les données.