2012-04-08 1 views
3

Je dois générer une chaîne d'URL pour un rapport SSRS (afin de le lier à notre logiciel CRM). Le nom du rapport est en hébreu. Lorsque j'envoie la chaîne URL (avec Heb) à Internet Explorer, elle ne reconnaît pas l'adresse car elle n'est pas encodée avec l'encodage en pourcentage (BTW, ça marche bien dans Firefox). (L'envoi d'une URL en anglais ne fonctionne que très bien.)Code T-SQL pour la conversion de la chaîne nvarchar en UTF-8 (pour le codage en pourcentage de l'URL)

Quoi qu'il en soit, j'ai essayé d'effectuer le codage. J'ai réussi à le convertir en URI avec des caractères UNICODE. Je dois obtenir l'URI en UTF-8. Par exemple, la lettre «י» devrait être convertie en «% d7% 99» et non en «% 05% D9».

J'inclus un lien: A table with the codes, for your use, if needed.

J'ai besoin de la conversion fonction \ de codage pour 1 caractère. Je peux construire le reste du script/fonction pour la chaîne complète par moi-même.

J'ai utilisé un script qui utilisait la fonction master.sys.fn_varbintohexstr. Comme je l'ai dit, cependant, les résultats ne sont pas appropriés pour IE.

les éléments suivants:

SELECT master.sys.fn_varbintohexstr((CAST (N'י' AS varbinary))) 

obtiendrez 0xd905, que je formaté en pour cent de codage. Je devrais obtenir 'd7 99' à la place.

Je récapitule un caractère hébreu en un codage de pourcentage d'URI. Je reçois un résultat unicode. Je souhaite> obtenir un résultat utf8. Entrée = 'י'. Sortie actuelle =% d9. Sortie souhaitée =% d7% 99

Comment puis-je obtenir ces résultats?

+0

Avec quelle version de SSRS travaillez-vous? –

+0

version 2008 (10) –

+0

voir aussi https://stackoverflow.com/questions/35200452/compute-md5-hash-of-a-utf8-string/35289890#35289890 pour une description de la conversion d'une chaîne en codage UTF-8 octets. – Ben

Répondre

0

J'ai dû faire face à quelques problèmes similaires et il y a deux approches que vous pouvez envisager; le premier est de transformer vos données en HTML dans la requête et de rendre le résultat en HTML dans le RDL, le second est d'utiliser JQuery pour identifier les cellules avec la valeur incorrecte sur le client et ensuite transformer cette cellule (encore une fois, en utilisant JQuery). L'avantage de la deuxième option est que si le rendu du serveur fonctionne sur Firefox, la surcharge de transformation n'est pas invoquée. L'inconvénient est que si vous ne rendez pas le rapport au format HTML, cela ne fonctionnera pas.

Pour la première option, dans l'instruction select vous devez modifier la colonne appropriée pour produire une valeur nvarchar qui ressemble à

<span style="font=yourfont;" charset="UTF-8"><a href="yourdestination.com" target="_blank">linkname</a></span>

Avec cette chaîne en tant que données vous attribuez alors que le approprié colonnes (ou cellules, au besoin)

Dans le concepteur RDL, faites glisser un espace réservé pour votre champ sur le concepteur et faites un clic droit sur l'espace réservé et sélectionnez placeholder properties, puis vous pouvez choisir d'afficher le contenu au format HTML.

Questions connexes