2017年8月1日 星期二

JavaScript 對於字串內含有 Unicode 編碼的處理方式

在 Web 應用程式上要做關鍵字搜尋時,用的是自製的搜尋元件,前端與後端都是自製的。一直以來都沒有什麼問題,而這次的新案子測試人員發現罕用字出現了問題。

輸入關鍵字,查詢出來顯示時還是正常的,點選需要的資料帶入 textbox 時,罕用字卻變成了 &#xxxxx; 這樣的型式 (xxxxx 是10進位數字)

嘗試了呼叫 unescape、decodeURI、decodeURIComponent 都無法處理

後來只好問 google,找到一些資料之後,寫成以下的 function,提供出來給大家參考:

//--------------------------------------------
//  將字串裡的 unicode 換成文字
//--------------------------------------------
function ConvertUnicode(str)
{
    // 先處理 \uXXXX 這種型式的
    str = unescape(str);
    // 然後再處理 &#XXXXX; 這種型式的
    var regexp = /&#[0-9]+;/g;
    var match = regexp.exec(str);
    while (match !== null)
    {
        var s = String.fromCharCode(match[0].replace(/[&#;]/g, ""));
        str = str.replace(new RegExp(match[0], "g"), s);
        match = regexp.exec(str);
    }
    return str;
}

2017年6月15日 星期四

給 Windows 10 中文輸入法安裝 “US 鍵盤”

將以下文字存成 .REG 檔案,並匯入登錄即可

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Keyboard Layout]

[HKEY_CURRENT_USER\Keyboard Layout\Preload]
"2"="00000404"
"1"="d0010404"

[HKEY_CURRENT_USER\Keyboard Layout\Substitutes]
"d0010404"="00000409"

[HKEY_CURRENT_USER\Keyboard Layout\Toggle]

解決 Windows 10 發生 Microsoft Compatibility Telemetry 佔用高 CPU 的問題

以系統管理員權限開啟 cmd 命令提示字元,執行以下指令

net stop diagtrack
net stop dmwappushservice
sc config diagtrack start= disabled
sc config dmwappushservice start= disabled

2017年3月10日 星期五

SQL Server 2016 on Linux 使用上的限制

安裝好 SQL Server 2016 on Linux 之後,接下來就是要建立資料庫、建立資料表以及後續的管理工作。不過由於目前在 Linux 上還沒有官方版本的 GUI 管理工具,於是從 Windows 上用 SSMS 連線進去。連線的方法跟連線到 Windows 上的 SQL Server 相同。

經過幾番嘗試,目前發現使用 SSMS 管理 SQL Server 2016 on Linux 上的資料庫時,有以下的限制

  • 不支援用 SSMS 的圖形工具建立、檢視及修改
    1. 資料表結構
    2. 條件約束 (Constraint)
    3. 索引鍵 (Foreign Key)
    4. 資料表圖表

2017-03-10_065244

  • 不支援用圖形工具「編輯前 n 個資料列」,而且會造成 SSMS 閃退

而以下項目是可以使用 SSMS 的圖形工具建立、檢視及修改的

  • 資料庫
  • 索引 (Index)
  • 統計資料 (Statistics)
  • 檢視 (View)
  • 登入
  • 伺服器角色

2017年2月11日 星期六

於 .Net 4.5 使用 Crystal Report 的注意事項

最近接了一個定時抓資料產生報表的案子,想說應該很容易,沒想到卻因為 Crystal Report 的問題卡關了一整天

症狀是這樣的:服務一啟動就發生 1067 錯誤

2017-02-11_164847

看事件檢視器中的錯誤訊息是 System.IO.FileNotFoundException,但是卻不知道是哪個檔案找不到

2017-02-11_165040

卡了好幾個小時之後,轉個方向,改成用 Console 程式來產生報表,結果一跑就看到問題發生的原因了,是找不到這個檔案 "C:\Program Files (x86)\SAP BusinessObjects\Crystal Reports for .NET Framework 4.0\Common\SAP BusinessObjects Enterprise XI 4.0\win32_x86\dotnet1\crdb_adoplus.dll"

可是根本就沒有這個目錄,怎麼可能找得到檔案呢?

2017-02-11_165541

把這個路徑拿去 google,一搜馬上就有結果了,原來要在 App.config 的 startup 節加上 useLegacyV2RuntimeActivationPolicy="true" 這個屬性。

也就是把
<startup>
改成
<startup useLegacyV2RuntimeActivationPolicy="true">

改好之後,重新建置,執行,果然正常了。
為免遺忘,特記述於此。