Maison  >  Article  >  développement back-end  >  Introduction détaillée au cas de test de plusieurs problèmes XML

Introduction détaillée au cas de test de plusieurs problèmes XML

黄舟
黄舟original
2017-03-22 16:30:421965parcourir

Lors de l'utilisation du serveur SQL, il est inévitable de gérer les paramètres XML. XML apporte de la commodité à nos programmes la plupart du temps, mais il arrive aussi que l'affectation des variables échoue. (Bien sûr, si votre propre XML ne peut pas passer l'inspection d'un logiciel tel que XML Spy, alors ce n'est pas le cadre de cet aspect ~)

Les exemples partagés aujourd'hui sont très simples, testez simplement quelques exemples

DECLARE @x XML  
 
 
SELECT @x =
&#39;<a>1</a>&#39;
 
SELECT @x =
&#39;<?xml version="1.0" encoding="utf-8"?>
<a>1</a>
&#39;
 
SELECT @x =
N&#39;<?xml version="1.0" encoding="utf-8"?>
<a>1</a>
&#39;
 
SELECT @x =
&#39;<?xml version="1.0" encoding="utf-8"?>
<a>一个人</a>
&#39;
 
SELECT @x =
&#39;<?xml version="1.0" encoding="GBK"?>
<a>单身狗汪</a>

Exemple 1 :

C'est l'exemple que nous voyons habituellement le plus, et il peut être compilé sans aucune pression. L'affectation de variable a réussi, puis la requête, l'analyse, comme vous voulez~

Exemple 2 :

La compilation a également réussi Il semble que ce soit l'endroit le plus susceptible de provoquer des malentendus. J'ai toujours pensé que le serveur SQL L'affectation à l'intérieur ne prend pas en charge les en-têtes tels que

<?xml version="1.0" encoding="utf-8"?>

, donc je dis généralement au codeur que si une telle erreur se produit, supprimez simplement l'en-tête (ce sera effectivement bien, mais le la raison est fausse) (⊙﹏⊙)b). En fait, le type XML lui-même est pris en charge, mais ce n'est qu'une question de scénarios d'application lorsque nous appelons des procédures stockées ou attribuons des paramètres dans des instructions. SQL Server a dit que je n'assumerai pas cette responsabilité

Exemple 3 :

Il y a un problème lors de la compilation de cet exemple, et le compilateur renvoie le

message 9402, niveau 16, statut 1, ligne 8
Analyse XML : ligne 1, caractère 38, le codage ne peut pas être commuté

Cependant, la différence entre l'exemple 3 et l'exemple 2 est que l'affectation dans l'exemple 3 utilise le codage Unicode, tandis que l'exemple 2 ne le fait pas. Faites-le, donc dans l'exemple 3, je suis tombé à genoux instantanément ╮(╯_╰)╭. Par conséquent, les erreurs de transfert de paramètres de base de données que nous trouvons habituellement sont dues au fait que cette méthode est utilisée, j'ai donc été dupé_(:з」∠)_. Ce n'est donc pas que ce n'est pas supporté, c'est juste qu'il y a un problème avec notre méthode d'appel

Exemple 4 :

Message 9420, niveau 16, statut 1, ligne 9
Analyse XML : ligne 2, caractère 5. Caractères XML illégaux

Hé ~ Une autre erreur est signalée ~ Cette fois, il s'agit d'un caractère XML illégal Il semble que l'encodage soit utf-8, qui ne prend pas en charge le chinois. Alors parfois, si vous ne faites pas attention à ces détails, c'est vraiment.../(ㄒoㄒ)/~~

Exemple 5 :

La compilation s'est bien déroulée cette fois, l'encodage à l'intérieur a été modifié en encodage GBK. Il peut prendre en charge le chinois. Bien entendu, la compilation ne pose aucun problème.

Ajouter un autre exemple

SELECT @x =
&#39;<?xml version="1.0" encoding="GBK"?>
<a>繁体字 龍 _(:з」∠)_</a>

est également OK. Certains caractères chinois traditionnels sont également pris en charge dans la bibliothèque de polices GBK, et il n'y a généralement pas lieu de s'inquiéter de ce problème. À moins qu'il n'y ait des symboles spéciaux, c'est difficile à dire haha

Enfin, encoding="utf-8" et encoding="UTF-8" sont équivalents, et il n'y a pas de respect de la casse ici. L'attention est là...

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn