J'ai données dans un champ nvarchar avec des données au format ascii: "Zard Frères Guesta"SQL Server 2005 Convertir Ascii en Unicode (UTF-8 -> nvarchar)
Comment puis-je convertir à un lisible format (unicode) dans t-sql?
J'ai données dans un champ nvarchar avec des données au format ascii: "Zard Frères Guesta"SQL Server 2005 Convertir Ascii en Unicode (UTF-8 -> nvarchar)
Comment puis-je convertir à un lisible format (unicode) dans t-sql?
Je pense que ce que vous dites est que vous avez ce que devraient être les deux octets d'un seul caractère Unicode dans deux caractères Unicode consécutifs (les octets hauts sont probablement tous les 0 octets). Cela peut arriver pour toutes sortes de raisons si vous ne manipulez pas correctement les pages de code lors des insertions.
Vous aurez besoin de revenir à des octets uniques, puis de réencoder les données.
Je pense que votre problème est que vous utilisez CODEPAGE = 1252 (un jeu de caractères codés sur un octet) lorsque vous chargez les données dans OPENROWSET.
Essayez d'utiliser 1202 (UTF-16), ou peut-être 1208 (UTF-8)
Vive
Je crois que la page de code 65001 devrait faire l'affaire. https://connect.microsoft.com/SQLServer/feedback/details/370419/bulk-insert-and-bcp-does-not-recognize-codepage-65001?wa=wsignin1.0 –
http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=62406 a une fonction qui le fera:
select dbo.utf8_to_utf16('Zard Frères Guesta')
Résultats:
Zard Frères Guesta
Les valeurs sont stockées dans un fichier texte dans ce format (par exemple Zard Frères Guesta) et j'utilise un insert en vrac avec openrowset pour importer les données. – Guazz
sélectionner somecolofdata \t \t \t de OPENROWSET (BULK '' '+ @filePath + '\' + @FileName + ''', \t \t \t \t \t FORMATFILE = '' '+ @formatFileName + ''', \t \t \t \t \t FICHIERERREURS = '' '+ @errorFileName + ''', \t \t \t \t \t firstrow = 2, \t \t \t \t \t \t \t \t \t CODEPAGE = 1252, \t \t \t \t \t \t \t \t \t \t MaxErrors = 1000 \t \t \t \t) comme IMPORTEDDATA – Guazz
Ceci est l'entrée du fichier de format: –
Guazz