日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

IronRuby - 文件编码惹的祸

發(fā)布時間:2023/12/20 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 IronRuby - 文件编码惹的祸 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

使用VS2010的CodedUI來做自己的自動化測試框架中介紹了我將使用IronRuby作為腳本語言來編寫自動化測試腳本,但是當時在使用IronRuby編寫腳本過程中發(fā)現了一個編碼導致的問題,在這里給大家介紹一下,大家在編寫腳本時一定要主要腳本文件的編碼。

問題描述

  我在rb文件中調用了C#的Microsoft.VisualStudio.TestTools.UITesting.dll的查找按鈕并單擊的功能,但是總是報錯,說找不到此控件,但是我在C#代碼中編寫類似代碼是沒有問題。出現問題后上網搜索了一下,但是畢竟資源不多,沒有任何結果,于是上IronRuby的codeplex網站提交了一個bug,見:encode error??具體描述如下

?

I want to use VisualStudio UITest to do my auto UI test, but I don't find window and button.
( attachment is Microsoft.VisualStudio.TestTools.UI
Testing.dll )
code:
require
"Microsoft.VisualStudio.TestTools.UITesting.dll"
include Microsoft::VisualStudio::TestTools::UITesting::WpfControls
w
= WpfWindow.new
w.SearchProperties[
"Name"] = "你好";
puts w.SearchProperties[
"Name"]


result: 脛茫潞脙
expect : 你好
  • 為了簡化應用,我在C#中建立了一個Application.cs文件,里面有一個Application類,類中有一個test方法,傳入一個string參數并直接返回:

?

????public?class?Application
{
public?string?test(string?a)
{
return?a;
}
}

  • 使用Notepad++建立main.rb,里面主要就是調用Application.Test方法:puts?Application.new.test("你好")

運行后,顯示的不是”你好“兩個字,而是幾個亂碼。

分析問題

  我上網搜了一些和字符編碼相關的內容,很多都是介紹字符編碼轉換的,如result = Iconv.iconv("GB2312","UTF-16",a) ,我在rb腳本和C#都試過了多個字符轉換的情況,發(fā)現仍舊不能正確解析。

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

  • 標題:Ruby處理Unicode有沒有什么問題?
  • 問:我現在用的是.Net下的一個Ruby實現IronRuby,現在遇到一個問題,不知道Ruby中是否也有,問題是:在ironRuby代碼中直接hash.new 附上中文沒有問題,但是有種情況有問題,有一個.Net類庫,它有個類似hash的屬性,我在ironRuby代碼中給它付了一個中文,但是取出來的時候發(fā)現是亂碼了,不知是何原因?
  • 回復:ruby1.8里面是沒有編碼的概念,都是字符序列.所以你給他什么就是什么,他不關心.但是ruby文件有編碼,直接決定了你的字符序列的編碼.我不知道.net是什么編碼的,兩邊一致應該就可以了.

我提出了一個假設,是不是文件編碼導致的?

解決問題

既然提出了假設,接下來就是驗證我的假設了。由于我對字符編碼不熟悉,于是又上網搜索了一些,了解了以下Utf-8,GB2312等,而C#是支持Unicode的,所以我接著又試了以下幾步:

  • 在Notepad++把文件更改為UTF-8的格式,如下圖所示:

?







  • 在ir.exe執(zhí)行中加入參數 -KU
    ir?-KU?-X:ShowClrExceptions main.rb

再次運行后,發(fā)現竟然一切又是那么美好!

問題回顧

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

  • 遇到陌生問題而自己沒有思路時,求助高手是最快速便捷的方法
  • 解決問題方法之一就是提出假設再驗證假設
  • 使用新技術時,最好系統(tǒng)學習一下,例如我就是花了半天時間看了一下《IronRuby Unleashed.pdf》一書才知道ir.exe的 參數-KKcode了,否則我更改了文件編碼也未必會想到增加ir.exe的參數
  • 知識點:文件編碼直接影響ruby的字符編碼





  • 本文轉自 jingen_zhou 51CTO博客,原文鏈接:http://blog.51cto.com/zhoujg/518033,如需轉載請自行聯系原作者

    總結

    以上是生活随笔為你收集整理的IronRuby - 文件编码惹的祸的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。