Je stocke du code XML dans une colonne XML dans SQL Server. SQL Server stocke les données en interne dans UTF-16. Par conséquent, le fichier XML stocké doit être en UTF-16.Stocker des données UTF8 dans la colonne UTF16
Le XML que j'ai est en utf-8, il a cette déclaration sur le dessus:
<?xml version="1.0" encoding="UTF-8" ?>
Lorsque je tente d'insérer xml avec la déclaration UTF-8 je reçois une exception en disant quelque chose sur le codage. Je peux facilement résoudre ce problème de deux façons:
en supprimant la déclaration ou
en changeant la déclaration
:
<?xml version="1.0" encoding="UTF-16" ?>
Problème
Je ne sais pas si c'est «sûr» ou correct de simplement enlever ou remplacer la déclaration. Vais-je perdre des données ou le XML sera-t-il corrompu? Ou dois-je convertir la chaîne en C# de utf-8 en utf-16?
C'est toujours une bonne idée de citer des exceptions que vous obtenez et que vous ne comprenez pas actuellement. –
Si vous stockez les fichiers sous forme de texte, stockez-les en tant que texte (c'est-à-dire, traitez-les en tant que tels, ce qui signifie appliquer un codage universel). Bien sûr, cela vous obligerait à supprimer la déclaration de codage en ligne. Je voudrais juste les stocker comme des blobs, mais qui se débarrasse de telles considérations. – Joey
SQL Server stocke les données en interne sous la forme UCS-2, pas UTF-16. Cela n'a d'importance que si vous utilisez des paires de substitution UTF-16. –