2013-03-27 64 views
4

我們遇到了嘗試在PHP中創建電子名片的字符編碼問題。在Outlook中使用PHP生成電子名片的字符編碼問題

在Outlook中,使用特殊字符的名稱會變形,如「é」變爲「Ã」。

我們更新了頭文件和Windows字符編碼的FN和N部分,但問題仍然存在。

感謝您的任何建議。

維卡摘錄:

BEGIN:VCARD 
VERSION:3.0 
REV:2013-03-27 19:37:46 
FN;CHARSET=Windows-1252:Namé S. Nameé 
N;CHARSET=Windows-1252:Namé;Namé;;; 
TITLE:Associate 
ORG:Company 
EMAIL;TYPE=internet,pref:[email protected] 
TZ:-0400 
END:VCARD 

PHP頭電子名片:

header("Content-type: text/x-vcard; charset=windows-1252;"); 
    header("Content-Length: ".strlen($vc->card)); 
    header("Content-Disposition: attachment; filename=".$vcard_name.".vcf"); 
    header("Pragma: public"); 
+0

轉到編輯器中的編碼選項,並將其從utf8更改爲windows-1252,然後保存該文件。 – Musa 2013-03-27 23:57:37

+0

PHP腳本動態生成vcard文件,因此任何解決方案都必須在Outlook中打開該問題之前解決問題。 – jsuissa 2013-03-28 00:09:34

+0

打開你的php文件轉到編輯器中的編碼選項,並將其從utf8更改爲windows-1252,然後保存該文件。 – Musa 2013-03-28 01:11:09

回答

3

有一些類似的問題,但似乎沒有什麼在這個明確的。通過在vcard字段中指定字符集,它看起來像我在那裏的一半。

我終於得到它的工作通過更改以下爲「utf-8」:

header("Content-type: text/x-vcard; charset=CHARSET=utf-8;"); 

這同樣適用於虛擬卡本身的名稱字段。指定UTF-8似乎已經解決了特殊字符的顯示問題:

$this->card .= "FN;CHARSET=utf-8:".$new_display_name.$this->data['short_mode']; 
    $this->card .= "N;CHARSET=utf-8:" 

開業在Outlook 2007中的所有顯示按預期的重音字符。

+0

這都適用於我。 – 2015-11-20 08:43:45

2

您的解決方案並不適合我,我仍然在Windows上看到有趣的角色。

對我而言有效的是使用ISO-8859-1代替。您可以在PHP中使用utf8-decode()將UTF8轉換爲ISO-8859-1,並在Vcard中使用ENCODING=iso-8859-1以使相關字段在大多數基於UTF-8的客戶端上都能正常工作。

部首:

Content-Type: text/x-vcard; charset=iso-8859-1 

維卡例如:

N;CHARSET=iso-8859-1:Göteborg 

測試在Windows,OS X,IOS和Android。