Vous êtes ici Forums
  |  Connexion
 Forums
HomeHomeForums DNNForums DNNDéveloppementDéveloppementProblème dProblème d'accent, valeur d'une constante de chaîne de caractère IDE VB .NET
Précédente
 
Suivante
Nouveau message
25/01/2007 18:41
 

Bonjour

Je rencontre des problèmes de comparaison de chaine de caractère dans le code en VB .NET d'un module, Je suis en DNN 4.3.7.

Les caractères accentués sont systématiquement supprimés.

Soit le cas suivant :

   Const UtilEnr As String = "Utilisateurs Enregistrés"

   Dim r As Integer = String.Compare(NomRole.ToString, UtilEnr)

   If r = 0 Then

      Return PortalSettings.RegisteredRoleName

   End If

A l'execution le contenu de la constante UtilEnr ="Utilisateurs Enregistrs"

Le test ne pourra jamis être vrai et ne retournera jamais zéro.

Pouvez vous m'aider, car je débute avec DNN.

 

 

 

 

 

 

 
Nouveau message
26/01/2007 21:01
 

Dans le cas présent il doit etre possible de faire le test sur une substring pour contourner le problème, mais de manière générale, j'éviterais de traduire les noms de roles par défaut; en théorie ça doit passer mais ça laisse une place au risque qu'un morceau de code invoque le role en dur quelque part, ou dans un module additionnel.

  


Benoît Sarton www.bsi.fr
 
Nouveau message
26/01/2007 22:12
 
As tu essayé de charger la valeur contenant l'accent depuis un fichier de ressources, et de comparer les valeurs une fois encodées avec un .ServerEncode et .ServerDecode, avec l'option Text.Encoding.Default (ANSII) ?
Attention toutefois, il faudra réaliser cela en debug pour vérifier les valeurs, car un encodage de trop et c'est fichu.

C'est d'ailleurs un sujet dont nous avons parlé de nombreuses fois, ce phénomène se produisant lorsqu'un email dont le titre contient un accent est envoyé depuis la console Admin.
Les accents sont mangés car ils sont encodés en UTF-8 coté ressource resx (encodage normal et invariable pour le format XML), puis (dé)codés pour le traitement en ANSII et enfin ré-encodés en ISO-8859-1 pour l'affichage sur la page web. Cette dernière norme varie avec les cultures.

En savoir plus sur l'encodage.

Charger du texte en utilisant la traduction core DotNetNuke :
Localization.GetString("RegisterdUserGroup.Name", localResourceFile)
Il ne devrait pas y avoir de problème si tu hérites de PortalModuleBase, sinon, importe DotNetNuke.Service.Localization, et utilise Localization.GetResourceFile(Me, "MonAscx.ascx.resx") en remplacement de LocalResourceFile, ce fichier devant se trouver dans le dossier App_Localresources ...

 Dim strCoreRoleName As String = Server.HtmlEncode(Me.PortalSettings.RegisteredRoleName)
Const strCustomRoleName As String = Server.HtmlEncode(Localization.GetString("RegisteredUsersGroup.Name", Me.localResourceFile))
If strCoreRoleName = strCustomRoleName Then
   Return strCoreRoleName
Else
   Return strCustomRoleName
End If


Je ne vois pas bien l'utilité d'un tel procédé, tu nous expliques ?

 
Nouveau message
19/03/2007 16:00
 

Bonjour,

J'ai , je pense le même problème. Mais avec des modules créé entièrement à la mimine chez nous.

Et donc on a aucun accent ???

le language est du C# et si cela peut aider dans le répertoire ou est installé le module j'ai :

un répertoire : App-localRessources avec : avec 3 fichiers edit, view et setting au début du nom de mon module.

et ensuite : 4 fichiers : telechargement.dnn

                                 ViewTelechargement.ascx avec pour entete (<%@ Control language="C#" Inherits="Modules.Telechargement.ViewTelechargement" CodeFile="ViewTelechargement.ascx.cs" AutoEventWireup="true" Explicit="True" targetSchema="http://schemas.microsoft.com/intellisense/ie5"%>)

                                  ViewTelechargement.ascx.cs

                                  ViewTelechargement.ascx.resx

je sais que le code n'est pas compilé mais est-ce que cela vient de ça ou pas ??

pour l'instant tout nos modules sont fait ainsi.

et j'ai pas vraiment compris les post précédents (j'suis pas developper :oP, mais je dois résoudre le blème ) Merci

 
Nouveau message
20/03/2007 19:10
 

Bonjour,

Tu devrais utiliser plutôt le RoleID, car si ton instance dnn est en en-US ton code ne fonctionnera plus ! Regarde aussi les classes disponibles dans l'espace de noms DotNetNuke.Security.Roles.

De plus, pour la comparaison de chaine de caratères tu as plusieurs surcharges à ta disposition dont  System.String.Compare(string, string, System.StringComparison) qui utilise un emun StringComparison pour indiquer comment faire la comparaison. Voici quelques pistes, sinon explique nous ce que tu veux faire exactement. Nous pourrons peut-être être plus précis.

Gilles

 
Précédente
 
Suivante
HomeHomeForums DNNForums DNNDéveloppementDéveloppementProblème dProblème d'accent, valeur d'une constante de chaîne de caractère IDE VB .NET