網頁

2017/06/27

JSON Parse in Delphi XE (02)

JSON Parse in Delphi XE (01) 裡提到因為文字轉碼失敗引發的錯誤

今天就來試著解決這個問題

首先的判斷是:

Indy 的 BUG?

那就來看看其它的軟體是否能被正確顯示:

使用 Notepad++ 存放下載的文字內容

可以正確顯示,表示從 Indy 下載下來是正確的。


TMemo 元件的 BUG?

將 Indy 下載的文字,在 Design mode 下存到 TMemo.Lines 裡,再重新執行:
經 Design mode 儲存後再取出的執行結果
看起來就很明顯了,不是 IDE 的 BUG,就是 Component 的 BUG!

































但,它就是 Unicode,不能顯示會是它們的錯嗎?

既然 Notepad++ 可以顯示,也許該從字型方面下手,會不會是 Tahoma 字型沒有支援 Unicode?

就來試試有掛「Unicode」的【Lucida Sans Unicode】字型看看吧!



































呃啊啊!你這個小必取啊啊啊!!

難道,這真的是 Delphi 的 BUG?

雖然 Delphi Bug 是出了名的多,但我們不能因為這樣就懷疑它,要心懷【無罪推定原則】(英語:presumption of innocence)才是。

那麼,會是 WinXP 這個系統的問題?

相同專案在 Win7 下執行結果

字型可以被正確顯示,我們真的是誤會 Delphi 了 (笑)

問題還沒解決,同樣是 WinXP,為什麼 Notepad++ 可以顯示,而 Delphi 卻不行?

是什麼樣的字型,可以正確被顯示出來?還是有什麼神奇的設定?

真相大白,兇手就是你!

【Source Code Pro Medium】是 Adobe 近幾年提供給程式人員使用的等寬字型,也是 Unicode 字型。

到此真相大白,原來是 Windows 字型 Unicode 版本差異造成的問題,以【Lucida Sans Unicode】來說:

  • Windows XP: V2.00
  • Windows 7: V5.00

從版本上的落差大約可以知道字數的多寡。

最後來看看 Delphi 使用 Source Code Pro Medium 字型,是否真能正確顯示及使用吧!

最終結果
如此一來便解決 Unicode 無法顯示的問題,只是現在還有多少人使用 WinXP 呢? (笑)

== 未完待續 ==

沒有留言:

張貼留言