2010-02-15 5 views
1

Existe-t-il un moyen d'analyser les codes utf dans vbscript? Ce que je voudrais faire est de remplacer tous les codes comme "\ u00f1" dans une chaîne pour son caractère correspondant.parse utf code dans vbscript

Répondre

1

La fonction Unescape fait cela *, seulement il exige que les caractères Unicode sont codés dans le format %u***xxxx*. Donc, vous devrez d'abord remplacer les codes \u***xxxx* par leurs équivalents **%u***xxxx*. Voici un exemple:

str = "\u0044\u006F \u0063\u0061\u0074\u0073 \u0065\u0061\u0074 \u0062\u0061\u0074\u0073\u003f" 

Set re = New RegExp 
re.Pattern = "\\(u[a-f\d]{4})" 
re.IgnoreCase = True 
re.Global = True 

str2 = Unescape(re.Replace(str, "%$1")) 
MsgBox str2 

* Notez que Unescape remplace également les codes %***xx* dans la chaîne avec les caractères ASCII correspondants. Donc, si %***xx* est une sous-chaîne légale dans votre chaîne, vous devrez écrire votre propre fonction de remplacement. Une telle fonction pourrait faire ce qui suit:

  • recherche occurences des **\u***xxxx* -comme sous-chaînes dans votre chaîne d'entrée,
  • extraire le code de caractère de chaque match, et le convertir en hexadécimal en décimal forme,
  • appelez ChrW pour convertir le code de caractère décimal en caractère Unicode correspondant,
  • remplacez chaque correspondance **\u***xxxx* avec le caractère correspondant.
+0

C'est exactement ce dont j'avais besoin;) – Omar

+0

Que fait re.Replace (str, "% $ 1")? Quelle est la signification de "% $ 1"? – Omar

+0

@Carlos: Ce code effectue une opération de remplacement sur la chaîne 'str' en utilisant une expression régulière (' re'). Il remplace toutes les occurrences du modèle 'u [a-f \ d] {4}' (c'est-à-dire, * uxxxx *) précédé de \ avec le même texte précédé de%. '$ 1' dans la chaîne de remplacement est un raccourci pour ce modèle réutilisé. – Helen