Convertir Latin 1 encodé en UTF8 Unicode
Je suis venu à essayer de convertir une base de données qui est encodée en UTF8 de ce à quoi il ressemble, en un windows 1251 d'encodage (ne pas demander, mais j'ai besoin de faire cela). Tous les russes, les caractères encodés dans la base de données apparaissent comme абÐ2Ð3ÐÐ. Quand je les ai retirées de la db dans mon application en C#, en chaînes, je les vois encore абÐ2Ð3ÐÐ. Peu importe ce que j'essaie de faire interpréter cette chaîne de caractères comme une chaîne encodée en UTF8, il semble être interprété comme latin1 seul octet string, et je ne vois pas mon texte apparaissent comme des russes. Ce que j'ai essentiellement besoin de faire est de convertir cette latin1 à la recherche-utf8 chaîne encodée en Unicode, afin que je puisse le convertir plus tard à 1251, mais je n'ai pas été capable de le faire avec succès. Quelqu'un a des idées?
Cette question est incohérente. Ce qui sur terre est "latin 1 encodé en UTF 8"?
OriginalL'auteur | 2009-09-16
Vous devez vous connecter pour publier un commentaire.
Maintenant, vous avez une normale chaîne Unicode contenant l'alphabet Cyrillique.
Noter qu'il est possible que votre "Latin-1" misencoded chaîne pourrait en fait être un " Windows page de codes 1252’ misencoded chaîne; je ne peux pas dire à partir de l'exemple donné qu'il n'utilise pas l'un des personnages qui sont différents entre les deux codages. Si c'est le cas, utilisez
GetEncoding(1252)
à la place.Aussi c'est de supposer que c'est le contenu de la base de données à la faute. Si la base de données est censé pour stocker des chaînes UTF-8, mais vous êtes en la tirant comme si elles étaient en Latin-1 (ou de la page de codes 1252 à cause de cela étant le système de page de codes) alors, vraiment, vous devez reconfigurer votre couche d'accès aux données pour définir le bon encodage. Si vous utilisez SQL Server, il est préférable de commencer à utiliser le type de données NVARCHAR.
merci, nitfixed.
OriginalL'auteur bobince
Je suis à l'aide de sql server, et toutes les colonnes sont de type nvarchar. Les données ont été importées avec dump mysql à partir d'une base qui a été latin1, pas en utf8. Donc, toutes les chaînes unicode sont tout simplement l'encodage latin1. En tout cas, j'ai pensé à elle, et son très similaire à ce que vous avez suggéré. voici ce que j'ai fait pour convertir l'encodage latin1 utf8 en 1251.
OriginalL'auteur