Apple email 亂碼小註解

我本來用 Apple 的 Macbook AIR 收信, 最近改成 Surface Book 2. 原本收到其他同仁用 Apple Macbook 寄出來的加密信件, 在 Apple 上直接用 Apple Mail 加上插件就可以看到解密後的郵件, 相當地方便! 但換到 Windows 底下就變亂碼了, 這件事有點麻煩, 所以花了點時間解決.

首先 Kleopatra 解密軟體是無辜的, 它只是忠實地解開 PGP key. 編輯器也是無辜的, 這並不是 UTF-8 誤設成 Big 5 這類的問題. 不然用 Word 裡面選擇編碼的功能就能挑出對的那個編碼方式.

我這次遇到的是郵件變成了有很多等於符號的亂碼, 例如 =8E=BB=E5=A6=82=E6=9E=9C…, 這該怎麼辦呢? 這種很多 “等於" 的亂碼是 Quoted-printable (QP) 編碼, 中文是 “可打印字符引用編碼". 也就是可以把任何編碼的文字變成可以印出來的 ASCII 字元. 解密完的 mail 中也可以看到這些字樣:

Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain;
charset=utf-8

Apple 的電腦預設都是用 UTF-8 編碼寄出, 但是後續又被 quoted-printable 轉了一次. 解密軟體只負責解到 quoted-printable, 加上 Outlook 不像 Apple Mail 多了一道解 QP 的動作, 因此才會出現亂碼.

解決之道, 可以自己寫一個解 QP 的程式, 例如這位勇者仁兄 [1], 或者是到善心人士的網站上去轉 [2]. 這個網站還提供了很多轉來轉去的工具, 有需要的人可以做成書籤來備用. 另外有一個網站 [3] 提示了幾種亂碼的類型, 看到不同的亂碼就知道這是哪一類的問題. 基本上 unicode 就是 &# 開頭, 因此文件中一定會有很多 &#. 
random-character-1-620x200

幸虧有這些亂碼終結者, 我們才能有效率地解決網路上怪怪的相容性問題. 在此也感謝他們的貢獻!

[Note]

  1. https://social.msdn.microsoft.com/Forums/zh-TW/d1ff3e3f-bca2-4220-a970-e3557f623e90/-quotedprintable-?forum=233
  2. http://web.chacuo.net/charsetquotedprintable
  3. https://www.uni-ulm.de/acssu/ime/email_decoder_tc.php

Skype Kit 小註解

很多人都在用 Skype, 不過對於開發 Skype 需要用到的技術, 誤解還真是不少.

Skype 其實很貼心地把他們的技術都包在一個 Skype Kit 的執行檔裡面, 理論上只要把 API 都接對了, CPU 的 performance 夠快, 其他都不用做.

有人說開發 Skype 要支援語音一對五通話, 其實那是專指 PC 上的 Skype, 非 PC 上的 Skype 只需要支援 1 對 1. 何況 PC 的新規格上已經號稱可以支援音訊通話 1-to-24 了. 有趣的是, 我們看到這麼強大的數字應該就很不容易上當, 但是人家跟我說一定要做 1-to-5 的時候, 我居然相信了.;(

有人說開發 Skype 要支援 G.729, Silk, G.711….,  其實 Skype Kit 裡面什麼都有,  只要 CPU 夠快, 什麼都不用做. 

有人說開發 Skype 要支援 Beamforming, Noise suppression, Echo Canceling, AGC…etc., 其實 Skype Kit 裡面什麼都有, …(後略, 同上). 所以張載才會說, "於不疑處有疑, 方是進矣."  雖然我們要自信信人, 不過更要相信 spec.

如果說 Skype Kit 什麼都做了, 那麼開發 Skype 應用軟體應該是輕鬆寫意吧?非也!這包 Skype Kit 雖然包山包海, 不過一般嵌入式系統的 CPU 可是沒辦法像 PC 那樣揮灑自如. 隨便拿一支 4 microphone  的麥克風陣列, 未必能夠過 Skype 對 TV 廠的認證.

坊間的 Skype 認證麥克風, 主要是給 PC 用的. 因此它們並不需要通過 5 m 的測試 (人和麥克風距離 4 meters), 只需通過 1.5 m 測試. 此時 beamforming 的功能只是 optional, 關掉這個功能反而更好.

更麻煩的是, Skype 做系統認證的時候, 所搭配的每一個 camera 或 microphone 組合都要認證一次. 這導致了做 PC 週邊的認證很容易, 因為軟體全是 Skype 自己寫的, 球員兼裁判當然不會有問題.

而 embbed system 的認證就很麻煩了. 除非跑得動全套 Skype kit, 否則就得搭適合的 camera 和 microphone, 把某些工作得 off load 到 camera (microphone) module 上. 這些非標準規格的周邊配件等於要系統廠按規格訂製, 所以開起案來問題就很多. 

假設 Apple 的 FaceTime 推得很好, 相信 Skype 的空間就會愈來愈小. Skype 打電話到傳統電話還需要 Skype Out, 而用 FaceTime 從  iPad 打電話到 Iphone 簡直就是一塊小蛋糕!如果 Skype 不振作一點, 前方的路肩好像會有點綠油油的 – 前途堪慮啊!

另外, Apple 的 FaceTime 把 FaceBook 的臉 (face) 當成商標了, 看來 FaceBook 要推視訊電話的時候, 可能要多用一張臉來抵擋. 例如: Face 2F (face-to-face) 好像還不錯.