2011-04-04 2 views
5

J'essaye de créer VCard à la volée pour un site. J'ai simplement ouvert un "vrai" VCard une fois créé avec Outlook avec Notepad ++ et vu ce dont j'ai besoin pour en créer un à la volée. Tout fonctionne bien et je suis capable d'ajouter tout ce dont j'ai besoin, où j'ai besoin. Au lieu de cela un point:MS "VCard" caractères spéciaux français

  • Tous les caractères français comme É, À, E, C, etc montrant comme: Simon Dugr à ©.

J'ai ajouter tout suggéré par Outlook créé qui se propose d'ajouter: "charset = Windows 1252:" devant mon entrée de chaîne (également tryied ISO-8859-1, UTF8, UTF7, UTF -8, UTF-7) et aucun d'entre eux ne fonctionne.

Une suggestion?

EDIT (Après la réponse de Alexandre C.)
est ici la source VCard. S'il vous plaît noter que la source indique correctement, mais quand je l'ouvre avec Outlook, il me reste le problème d'accent:

BEGIN: VCARD VERSION: 2.1
N; LANGUAGE = fr-ca; charset = UTF-8: Dugré; Simon
ORG; charset = UTF-8: CompanyNameéàêâç
TEL; TRAVAIL; VOICE: 5555555555
X-MS-OL-DEFAULT-POSTAL ADDRESS: 0
EMAIL; PREF; INTERNET : [email protected]
X-MS-OL-CONCEPTION; CHARSET = utf-8: [VCard HTML Forma t]
REV: 20110404T135700
END: VCARD

Répondre

1

Voici la bonne ligne:

currentPage.Response.AddHeader("Content-Disposition", string.Format("attachment; filename={0} {1}.vcf", this.FirstName, this.LastName)); 
currentPage.Response.ContentType = "text/x-vcard"; 
currentPage.Response.ContentEncoding = System.Text.Encoding.GetEncoding("ISO-8859-1"); // THIS LINE 
currentPage.Response.Write(content); 
currentPage.Response.End(); 

Au lieu de:

currentPage.Response.Charset = "ISO-8859-1"; 
+0

Une question à ce sujet; Est-il correct de mettre "Default"? Parce que, par défaut, dans ce cas, est la valeur par défaut du serveur. Est-ce un "conflit" possible avec l'utilisateur quand celui-ci va l'ouvrir sur son ordinateur? –

+1

Vous devriez vérifier quelle est la valeur par défaut sur votre machine. Si la valeur par défaut change, elle peut se casser pour vous. –

+0

Merci Darryl. J'ai changé ma réponse. –

0

Essayez utf8 ou utf-8 comme charset.

+0

Ne fonctionne pas ... toujours pareil. Mais quand je regarde dans la source, il le montre comme "É" et pas vraiment bizarre –

+0

oui, c'est l'encodage UTF8 pour É. –

+0

UFT8, UFT7, ISO-8859-1 ou Windows-1252 incluent également É ou È, etc. Mais dans ce cas, pour une raison inconnue, aucun de ceux-ci ne semble fonctionner ... –

0

Voici une version qui fonctionne pour moi.

<%@ Page Language="C#" CodePage=1252 %> 
<% 
Response.Charset ="windows-1252"; 
Response.ContentType="text/x-vcard"; 
Response.AddHeader("Content-Disposition", "attachment; filename=test.vcf"); 
%> 
BEGIN:VCARD 
VERSION:2.1 
N:;Dugré;Simon 
FN:Simon Dugré 
ORG:CompanyNameéàêâç 
TEL;WORK;VOICE:5555555555 
EMAIL;PREF;INTERNET:[email protected] 
REV:20110405T164322Z 
END:VCARD 

Cette charge correctement dans Outlook 2003.

+0

J'ai essayé de faire la même chose que vous avez dit, et cela ne fonctionne pas ... mais je viens de voir "Cela se charge correctement dans Outlook 2003". Peut-être parce que je suis avec Outlook 2007? –

+0

Avez-vous essayé de prendre le code tel quel et de le mettre sur votre serveur web comme une page aspx? Si ce n'est pas le cas, essayez de voir ce qui se passe. L'autre chose que je ferais est de créer le contact dans Outlook 2007 et l'enregistrer en tant que vcard pour voir à quoi ressemble la sortie. –

+0

Merci Darryl. Mais aussi essayé! Et c'est pareil, exactement la même "Source" de VCard. Excepté qu'avec Notepad ++, le codage semble être différent comme le dit @Alexander C (désolé). Il l'ouvre comme UTF-8. Je vais essayer une façon de répondre à ma page et je reviendrai. Merci encore –

5

Vous devriez écrire CHARSET=utf-8 et non CHARSET=UTF-8 .

vCard Les spécifications suggèrent que le jeu de caractères doit être indépendant de la casse, mais Outlook ne s'en soucie pas.

+2

C'est exactement ce qui m'a aidé. J'ajouterais aussi: '; CHARSET = utf-8' doit être ajouté dans chaque ligne pouvant contenir des accents. –

0

J'ai également eu un problème avec les caractères spéciaux (langue polonaise). Je ne suis pas sûr s'il y a un problème avec l'encodage utf-8 dans Outlook ou autre chose.Après plusieurs approches avec utf-8:

Response.ContentType = "text/x-vcard; charset=UTF-8";

Response.HeaderEncoding = Encoding.GetEncoding("UTF-8");

Response.ContentEncoding = Encoding.GetEncoding("UTF-8");

Response.Charset = "UTF-8";

j'ai décidé d'essayer le codage Windows 1250, qui (dans mon cas) a fonctionné! Après avoir essayé de supprimer les lignes inutiles, il est apparu que la seule ligne i besoin est:

Response.ContentEncoding = Encoding.GetEncoding("Windows-1250");

Je recommande également la bibliothèque vCard qui m'a beaucoup aidé.

Questions connexes