SQLite.Net PCL 遇到的編碼問題與解決方式

如果你用 SQLite.Net PCL 在下 SQL 指令並且有包含非英文的搜尋條件遇到問題的話,很可能跟我們遇到的問題是一樣的

解法就順便提一下 SQLite Net PCL NuGet  之爭(誤

我們的 app 用了 SQLite.Net pcl 的 NuGet package 來當作存取 SQLite ORM 的方便的 library,不過剛遇到一個問題,
那就是下 where 條件的時候用到中文,結果發現會跳出 SQLite exception,並且發現奇怪怎麼 where 條件裡面的中文變成了亂碼!!WTF ?!
搜尋了一下,結果發現果然是個 issue
https://github.com/oysteinkrog/SQLite.Net-PCL/issues/147
還好~之前發現了一件事情~
這個是我們現在用的SQLite.Net 的 NuGet Package : https://www.nuget.org/packages/SQLite.Net.Core-PCL/
你在NuGet Manager 看到比較多人下載的也是這個,但其實這個是 Fork 出來的喔!
這個是它的GitHub: https://github.com/oysteinkrog/SQLite.Net-PCL
所以如果你跟我們一樣是用這個 Fork 出來的 NuGet 就會遇到編碼的問題,但是為什麼會選用這個而不用原作者的呢?

因為.. 那時候原作者的 SQLite.Net 超久沒更新的啊~~~~
BUT!!原作者前陣子有更新了喔!!
所以剛測試換回原作者的 NuGet 後,編碼的問題就解決了!!(灑花
所以可以的話,大家可以考慮換回原作者的 NuGet package,雖然功可能有點大,因為原作者有些設計上的 method 與 Fork 出來的不一樣。
順便一提,原作者的"底層",就是 wrapper 原生 SQLite dll 的那層是使用另外一個叫 SQLitePCL.raw 的 NuGet ,是個更輕量的實做吧(?
這個是 SQLitePCL.raw 的 GitHub 頁面:https://github.com/ericsink/SQLitePCL.raw

來個簡單的總結,你搜尋 NuGet 的話,不管是原作者或Fork出來的都有 SQLite net pcl 的字,不過組合起來的方式不一樣

原作者:
名稱: SQLite-net PCL
NuGet : https://www.nuget.org/packages/sqlite-net-pcl/
版本:1.1.1
Fork:
名稱: SQLite.Net PCL
NuGet: https://www.nuget.org/packages/SQLite.Net.Core-PCL/
版本:3.1.1
至於選擇就看大家囉!
PS : 不知道 Multi-PK  ORM 的在原作者的支不支援... Fork 的這個是不支援的,必須要自己下 SQL才行