ruby 1.8 的字串只支援ascii碼,在ruby 1.9 增加了編碼(encoding)屬性,能夠支援unicode. 新的功能有利於ruby更好的支援國際化,但因為字串物件被使用的太廣泛,新的介面導致很多現有**的修改。
+ 在ruby1.8, string[index]會返回index所在位置的acsii整數值:
irb(main):001:0> "123"[0]
=> 49
在ruby1.9,string[index]會返回index所在位置的字串:
irb(main):001:0> "123"[0]
=> "1"
如果你使用字串儲存二進位制資料,還希望能夠繼續用索引來獲得index所在位置的位元組,可以採用以下方法:
irb(main):002:0> "123".getbyte(0)
=> 49
+ 在ruby1.8,你可以直接對string[index]賦整數值:
irb(main):002:0> s = "123"
=> "123"
irb(main):005:0> s[1] = 53
=> 53
irb(main):006:0> s
=> "153"
在ruby1.9, 會丟擲異常:
irb(main):003:0> s = "123"
=> "123"
irb(main):004:0> s[1] = 53
typeerror: can't convert fixnum into string
from (irb):4:in `='
from (irb):4
from /usr/local/ruby-1.9.1/bin/irb:12:in `'
可以用新的setbyte方法來賦值:
irb(main):005:0> s.setbyte(1, 53)
=> 53
irb(main):006:0> s
=> "153"
+ 在ruby 1.8, "%d" % nil 會返回 「0」
在ruby1.9, "%d" % nil 會導致typeerror異常
+ 如果在你的字串中有特殊字元會導致無法用這個字串來構建正規表示式:
irb(main):001:0> s = "\233901234560"
=> "\x9b901234560"
irb(main):003:0> s.encoding
=> #
irb(main):002:0> regexp.new(s)
regexperror: invalid multibyte character: /�901234560/
from (irb):2:in `initialize'
from (irb):2:in `new'
from (irb):2
from /bin/irb:12:in `'
解決辦法是採用二進位制編碼格式(ascii-8bit):
irb(main):008:0> new_str = s.force_encoding("ascii-8bit")
=> "\x9b901234560"
irb(main):009:0> regexp.new(new_str)
=> /�901234560/
irb(main):010:0>
+ 從mysql資料庫返回的字串預設是ascii-8bit格式,但當你用這個字串來格式化另乙個字串的時候,如果其中包含特殊字元,就會導致異常。下面手工初始化乙個ascii-8bit的字串:
irb(main):010:0> str = string.new
=> ""
irb(main):011:0> str << 233
=> "\xe9"
irb(main):012:0> str.encoding
=> #
irb(main):014:0> new_str = "%c%s" % [245, str]
encoding::compatibilityerror: incompatible character encodings: utf-8 and ascii-8bit
from (irb):14:in `%'
from (irb):14
from /bin/irb:12:in `'
解決辦法是首先用string.new構建乙個ascii-8bit格式的字串,然後用《和+運算子:
irb(main):015:0> new_str = string.new
=> ""
irb(main):016:0> new_str << 245
=> "\xf5"
irb(main):017:0> new_str += str
=> "\xf5\xe9"
從Seam 2 1公升級到2 2筆記
主要是components.xml和pages.xml 或 page.xml 對xml schema引用的申明要改,如 xsi schemalocation 2.2.xsd 如果用到了rulebasedpermissionresolver,根據reference文件所說,要準備的jar檔案如下 用紅...
虛擬機器核心公升級(2 6 9 2 6 18)筆記
第一次make menuconfig啥也沒選,搞了半天總是無法啟動,後來網上搜了些資料,太多了,就不列出了,這裡只把步驟記錄一下 解壓新核心 usr src make menuconfig 配置核心各選項 device drivers scsi device support 此項不選的話,下面兩項就...
Win10筆記本顯示卡驅動更新公升級
win10筆記本顯示卡驅動更新公升級方法 裝置管理器檢視顯示卡型號 第一種方法相對麻煩,另外還需要進行大量查詢,不一般不建議新手朋友採納,主要建議大家通過一些工具去智慧型檢測是否有用顯示卡驅動更新,按照提示一鍵去更新公升級,這樣顯得要輕鬆方便的多。2 然後開啟執行魯大師軟體,之後點選頂部的 驅動檢測...