RUBY小經驗累積

來源:互聯網
上載者:User

GBK和UTF-8的轉換

用GBK而不要用GB2312,因為GBK不僅包含簡體中文,還包括繁體中文等,是一個大字元集。

# utf8 to gbk
def u2g(ucode)
  begin
    "#{Iconv.conv('gbk','utf-8',ucode)}"
  rescue
     " #{ucode} " #如果轉換不成功 則不轉換 並在字串兩邊加入空格 避免構造出錯誤的sql字串
  end
end

這是一個比較不錯的從utf-8轉換為gbk編碼的方法 在網路上抓取的資訊 可使用這個方法轉換

RUBY DBI
ruby和sqlserver互動的時候 使用dbi是一個不錯的選擇
dbi有兩個比較重要的方法,一個是execute方法,會返回一個結果集,一個是do方法,do方法不會返回結果集,也不會返回受影響的行數,do方法是提交一個事務,而commit方法可以將之前所有使用do方法提交的事務執行,commit會返回受影響的行數。

需要注意的是,如果使用do方法插入一條資料,而沒有commit直接disconnect了,將會導致這條資料插入資料庫又被刪除,因為你這個時候再插入一條新的資料發現,自增長的主鍵,被空出一個位置來,比如從3一下跳到了5,所以不要忘記commit。

Net::HTTP
Net::HTTP::new方法可以支援4個參數的重載,比如
req = Net::HTTP.new 'xxxxxx.com',80,'proxy.com',8080
第三個和第四個參數是指定Proxy 伺服器
第二個參數指定連接埠 不寫的話預設80

File類的某些方法需要包括'win32/file'
有些方法不能使用,是因為沒有包含win32/file庫require 'win32/file'
File.archive? 'c:/boot.ini'

請求URI的時候 使用URI::encode轉換一下
從uri讀到的資料寫入本地的時候 使用binmode模式

require 'open-uri'
uri = 'http://xxx.com/中文.rar'
data = open(URI::encode(uri)){|f| f.read}
file = File.new uri[uri.rindex('/') + 1..uri.length-1], 'w+'
file.binmode
file << data
file.flush
file.close

執行sql語句的時候 務必替換特殊字元name = "lee's book"
sql = "update tb_files set [name] = #{name.gsub("'","''")}"

RUBY指令碼尾碼名改為.rbw即可在執行時不顯示控制台

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.