none
Instance de liste et caractères spéciaux RRS feed

  • Question

  • Bonjour,

    Je crée par Visual Studio 2010 une définition de site qui comporte notamment une instance de liste.
    Cette instance de liste est issue d'un modèle de site que j'ai importé dans Visual Studio (par un nouveau projet "Importer le package de solution SharePoint).

    La création d'un site par ma définition se déroule sans problème et je retrouve la liste que j'ai instanciée.
    Seulement, en regardant les noms des colonnes de liste ou encore des affichages, les caractères spéciaux sont mal interprêtés.

    Cela vaut pour toutes les colonnes, y compris les colonnes natives.
    Par exemple, j'obtiens des colonnes telles que :

    • Créé par
    • Modifié par

    Le plus perturbant est que si je crée un site à partir du modèle de site duquel j'ai extrait cette instance, je ne reproduit pas ce problème.
    J'ai comparé les 2 fichiers Schema.xml (celui dans le WSP du modèle de site et celui de ma définition de site) et ils sont parfaitement identiques.

    Je ne vois pas vraiment où cette différence pourrait se situer... Une idée?

    Merci.

    • Déplacé Hengzhe Li mardi 21 février 2012 06:37 merge forum (Origine :Développement Sharepoint 2010)
    mercredi 2 novembre 2011 09:37

Réponses

Toutes les réponses

  • Il y a des chances que l'encodage du fichier xml ai lui même été changé à un moment donné... en tout cas ça sens l'embrouille Unicode / UTF 8 à plein nez !
    • Proposé comme réponse lionel limozin mercredi 2 novembre 2011 16:59
    mercredi 2 novembre 2011 16:59
  • Bonjour et merci pour cette réponse.

    Le problème est en effet lié à l'encodage du fichier mais je ne sais comment le résoudre dans mon packaging de définition de site.
    Je m'explique.

    J'ai observé via Notepad++ le fichier Schema.xml déployé avec ma définition de site.
    Celui-ci se présente comme "encodé en UTF-8 (sans BOM)".
    Par Notepad++ toujours, je l'ai converti en UTF-8 directement dans le file system du serveur et dès lors, l'instanciation de ma liste est correcte.
    Pour vérifier, j'ai re-convertis le fichier en UTF-8 (sans BOM) et je reproduit mon erreur.

    De fait, je suis retourné sur ma machine de dév et j'ai observé via Notepad++ le fichier Schema.xml dans ma solution Visual Studio.
    Mais ce dernier est pourtant simplement encodé en UTF-8.
    Visual Studio reconnaît d'ailleurs le fichier comme un "Document XML" avec un "Encodage : Unicode (UTF-8)".

    Pourquoi le fichier déployé a-t-il un encodage différent du fichier initial (même très proche)?
    Est-il un moyen de figer de façon certaine l'encodage sur le fichier d'origine?

     

    Merci encore.

    jeudi 3 novembre 2011 14:04
  • Dans le doute je remplacerai physiquement le fichier de votre solution Visual Studio par celui avec le bon encodage (positionné via Notepad++ par exemple), puis re packaging, puis retract de la solution, puis reinstall.
    • Proposé comme réponse lionel limozin jeudi 3 novembre 2011 14:43
    • Non proposé comme réponse Pierre Fudala vendredi 4 novembre 2011 14:03
    jeudi 3 novembre 2011 14:43
  • J'avais une idée de la conclusion de ce test mais j'ai tout de même fait la manipulation que vous indiquez, sans plus de succès.
    Je rappelle que sans le remplacer, le fichier initial dans Visual Studio possède le bon encodage. C'est le passage en WSP puis redéploiement qui semble le modifier.

    [Edit]: J'ai mal vu, c'est mes yeux qui sont déjà en weekend...
    Autre chose, j'ai ajouté dans ma définition de site une autre instance de liste bien distincte et qui s'instancie sans problème d'encodage et pourtant, le fichier dans le file system du serveur possède l'encodage UTF-8 (sans BOM).
    De fait, j'ai le sentiment que le problème se situe au sein du document XML... Mais comment vérifier la conformité de son contenu?

    Je peux aussi être sur une mauvaise piste... une autre idée?



    vendredi 4 novembre 2011 14:02
  • donc si je recapitule :

    - la définition de la liste (schema.xml) dans le projet Visual Studio est vu avec encodage UTF8
    - toutes instances de listes à partir de ce schéma posent des soucis de caractères
    - le fichier schema.xml une fois déployé via le WSP (dans le dossier feature) a un encodage UTF8 sans BOM

    on est ok ?

    Avez vous essayez de créer directement une nouvelle List Definition dans votre projet VS et de copier / coller le contenu du schema.xml (celui qui pose problème vers le nouveau) pour voir ce que ça donne ? (en créant une instance à partir de ce modèle)

    En principe le fichier doit contenir aussi cette déclaration en tout début : <?xml version="1.0" encoding="utf-8"?>

    c'est bien le cas ?

    vendredi 4 novembre 2011 15:06
  • En complément (surtout si ça ne fonctionne pas),

    Pouvez-vous remplacer vos libellés avec caractères spéciaux par des références à des ressources externes (fichiers de ressources .resx) ?


    Sébastien PICAMELOT - http://blogs.developpeur.org/gribouillon/

    vendredi 4 novembre 2011 16:58
    Modérateur
  • Je retrouve du temps pour me repencher sur mon problème.

    Sur le récapitulatif, on est ok.

    J'ai testé la création d'une nouvelle instance de liste dans VS et recopie du Schema.xml correctement mais ça n'a rien changé...
    Pour l'entête précisant l'encoding, le fichier extrait du modèle initial ne la possédait pas mais je l'avais rajouté dans mes tous premiers essais. Elle y est présente depuis.

    mardi 8 novembre 2011 13:27
  • Et en utilisant un resx comme proposé par Sébastien ?
    mardi 8 novembre 2011 13:40
  • Remplacer les libellés comportant des caractères spéciaux par leur référence à une ressource externe a fonctionné.
    (Dans mon cas, la plupart des libellés étaient natifs à SharePoint donc pas besoin de recréer de fichier resx.)

    J'ai donc une solution à mon problème.

    Toutefois, j'ai le problème sur l'ensemble des listes que j'importe de mon modèle de sites. La manipulation pour retrouver les libellés dans les fichiers et les remplacer par leur référence devient assez vite une contrainte.
    Je ne désespère pas de trouver une autre solution qui m'éviterait cette manipulation.

    En tout cas, merci à vous 2 :)

    mardi 8 novembre 2011 15:01