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即可在執行時不顯示控制台