IronRuby 檔案編碼惹的禍

2021-09-05 05:32:19 字數 1689 閱讀 8597

在使用vs2010的codedui來做自己的自動化測試框架

中介紹了我將使用ironruby作為指令碼語言來編寫自動化測試指令碼,但是當時在使用ironruby編寫指令碼過程中發現了乙個編碼導致的問題,在這裡給大家介紹一下,大家在編寫指令碼時一定要主要指令碼檔案的編碼。

我在rb檔案中呼叫了c#的microsoft.visualstudio.testtools.uitesting.dll的查詢按鈕並單擊的功能,但是總是報錯,說找不到此控制項,但是我在c#**中編寫類似**是沒有問題。出現問題後上網搜尋了一下,但是畢竟資源不多,沒有任何結果,於是上ironruby的codeplex**提交了乙個bug,見:encode error?

具體描述如下

i want to use visualstudio uitest to 

domy auto ui test, but i don

't find window and button.

( attachment

ismicrosoft.visualstudio.testtools.ui

testing.dll )

code:

require

"microsoft.visualstudio.testtools.uitesting.dll

"include microsoft::visualstudio::testtools::uitesting::wpfcontrolsw =

wpfwindow.

neww.searchproperties[

"name"]

="你好"

;puts w.searchproperties[

"name"]

result: 脛茫潞脙

expect : 你好

public

class

}

執行後,顯示的不是」你好「兩個字,而是幾個亂碼。

我上網搜了一些和字元編碼相關的內容,很多都是介紹字元編碼轉換的,如result = iconv.iconv("gb2312","utf-16",a) ,我在rb指令碼和c#都試過了多個字元轉換的情況,發現仍舊不能正確解析。

這時我突然想起上週遇到此問題後我給公司的乙個ruby高手請教過的這個問題,以下是郵件主要內容:

我提出了乙個假設,是不是檔案編碼導致的?

既然提出了假設,接下來就是驗證我的假設了。由於我對字元編碼不熟悉,於是又上網搜尋了一些,了解了以下utf-8,gb2312等,而c#是支援unicode的,所以我接著又試了以下幾步:

再次執行後,發現竟然一切又是那麼美好!

這個問題前後花了我一天時間去解決,總的來說問題相對來說不難,但是需要對ruby的字元編碼有所了解,而我以前沒有注意到這個也會引起問題,從解決這個bug過程中,可以有以下幾點與大家分享一下:

遇到陌生問題而自己沒有思路時,求助高手是最快速便捷的方法

解決問題方法之一就是提出假設再驗證假設

使用新技術時,最好系統學習一下,例如我就是花了半天時間看了一下《ironruby unleashed.pdf》一書才知道ir.exe的 引數-kkcode了,否則我更改了檔案編碼也未必會想到增加ir.exe的引數

知識點:檔案編碼直接影響ruby的字元編碼

周金根[ ]

都是 IDENTITY惹的禍

前不久系統伺服器出現了一次不大不小事故,資料庫乙個表的資料不翼而飛,這個表雖然算不上頂級重要的表,但也算的上是個很重要的表,大家趕緊查是什麼把這個表的資料刪的只剩下180多條資料.為什麼還有180多條資料存在哪?真是挺讓人納悶的,但發現這180多條資料中有乙個共性,那就是那個不該為空的字段變成了空值...

都是埠惹的禍

這幾天公司搬家,所以忙的blog好久都沒有更新,關鍵是沒有什麼技術上的事情,都不知道寫點什麼,呵呵。周四到週日一直在乙個客戶那邊進行產品的實施,整個過程自然比較有趣,對於我來說最重要的就是認識到了靈活程式設計的重要。我們的程式需要幾個通訊埠,其中乙個是1433用來連線sqlserver資料庫,很多的...

都是埠惹的禍

這幾天公司搬家,所以忙的blog好久都沒有更新,關鍵是沒有什麼技術上的事情,都不知道寫點什麼,呵呵。周四到週日一直在乙個客戶那邊進行產品的實施,整個過程自然比較有趣,對於我來說最重要的就是認識到了靈活程式設計的重要。我們的程式需要幾個通訊埠,其中乙個是1433用來連線sqlserver資料庫,很多的...