Classic ASP - Comment convertir une chaîne UTF-8 en UCS-2?
J'ai un problème lorsque je suis de stocker une chaîne UTF-8 dans SQL Serveur UCS-2. Quand je sortis pour afficher sur une page avec le type de contenu d'ensemble de l'UTF-8, il fonctionne très bien. Mais j'ai une troisième partie composant Javascript qui quand j'ai passer la chaîne de la base de données qu'il rend comme USC2. Ou pas en UTF8.
Est-il un moyen en ASP pour convertir cette chaîne en UTF-8, après la lecture de la base de données de passer à la troisième partie de la composante (crypté)?
Espérons que cela a du sens.
source d'informationauteur Brian G
Vous devez vous connecter pour publier un commentaire.
Mon soupçon est que vous êtes en train de tomber sous le coup de la forme classique post-codage de caractères problème d'incompatibilité.
Il va comme ceci:-
Si vous examinez le contenu du champ directement avec les outils SQL server, vous aurez probablement voir le corrompu les chaînes. Maintenant que vous souhaitez utiliser cette chaîne avec un autre composant qui s'attend à une simple chaîne unicode c'est là que vous découvrez ce bug.
La solution est de toujours vous assurer que toutes vos pages non seulement envoyer CharSet = "UTF-8" dans la réponse, mais aussi utiliser la Réponse.CodePage = 65001 avant d'utiliser la Réponse.Écrire et avant de tenter de lire toute Demande.Les valeurs d'un formulaire. L'utilisation de Codes de la directive dans le <%@ page d'en-tête.
Maintenant, vous êtes de gauche avec la réparation de la corruption des chaînes déjà dans votre base de données.
Utiliser un ADODB.Flux:-
Cette fonction (qui d'AILLEUR est la réponse à votre question réelle) prend une corruption de la chaîne (qui a l'octet de octet de la représentation) et convertit la chaîne de caractères qu'elle aurait dû l'être. Vous avez besoin d'appliquer cette transformation pour chaque champ dans la base de données qui a été victime de ce bug.
Encodage.UTF8 et l'Encodage.Unicode fournit suffisamment de fonctionnalités. Pour plus d'informations, voir Wikipedia