iT邦幫忙

23

Ruby中的Iconv實例:UTF-8轉Big5

cfc 2008-04-28 10:34:4914123 瀏覽

最近寫了一個可以傳送表單給網頁的程式,卻又因為目標網頁編碼為Big5而程式是UTF-8(包含送出的字串也是UTF-8)造成傳遞後亂碼的問題
因此可以使用這種方式來解決
(因為運作模式很類似SPAM ROBOT,所以只貼出轉換編碼的部份)
假設把固定的中文字串存入變數中(也就是不是從檔案讀取),然後再送出資料之前將資料編碼從UTF-8轉換成Big5

require 'iconv'
ic = Iconv.new("big5", "utf-8")
message = %{
假設這是一個長字串
當然包含換行
}
data = data + ic.iconv(message) # 在這邊用ic.iconv將編碼轉換
# Post data...

如此,即使script本身是UTF-8格式儲存,也能將編碼轉換成Big5並且正確無誤的發送到網頁中


0
davistai
iT邦大師 1 級 ‧ 2008-04-28 11:56:14

謝謝您的經驗分享,好樣兒的^^

0
john651216
iT邦研究生 1 級 ‧ 2008-04-28 14:43:05

謝謝分享

0
海綿寶寶
iT邦超人 1 級 ‧ 2008-04-28 16:54:09

真是年輕有為...用 Ruby

0
魯大
iT邦高手 1 級 ‧ 2008-04-28 20:10:46

真是神奇
謝謝分享

0
tgunlu
iT邦研究生 1 級 ‧ 2008-04-30 00:57:01

謝謝分享

0
loripan
iT邦研究生 1 級 ‧ 2008-05-04 16:26:05

謝謝分享

0
jennymsn
iT邦好手 10 級 ‧ 2008-05-04 17:54:32

很好的分享

0
amber093100
iT邦研究生 1 級 ‧ 2008-05-04 21:53:09

謝謝分享

0
mmm12345
iT邦研究生 1 級 ‧ 2008-05-09 23:06:53

謝謝分享

0
funkent
iT邦高手 1 級 ‧ 2008-05-10 20:50:38

php有內建的function

0
5min
iT邦好手 10 級 ‧ 2008-05-10 20:54:47

謝謝分享

0
fishk
iT邦大師 1 級 ‧ 2008-05-11 00:47:41

謝謝分享

0
tyc1220
iT邦研究生 1 級 ‧ 2008-05-25 23:50:23

謝謝分享

0
bigmotor
iT邦研究生 5 級 ‧ 2008-07-19 23:35:53

感謝分享這個資訊

0
逮丸逮丸
iT邦大師 1 級 ‧ 2008-08-05 18:34:25

您大概還沒碰到轉出會產生錯誤訊息的字碼,
哪些字我一時沒有具體的例子,
所以在rails裡面用這個iconv碰到列外事件時,
我也還搞不定該怎麼給避開該錯誤。
所以只好用爛方法,只將該頁有big5的字碼,
該頁就以big5顯示,其他仍用utf-8。

還有一點很確定的是,ruby中的iconv發生錯誤的狀況,
然後用linux上的

<pre class="c" name="code">/usr/bin/iconv

來執行,也會出現字碼錯誤的狀況,
但用perl的

<pre class="c" name="code">/usr/bin/piconv

就不會有問題
為什麼會這樣,我也不了,
所以若一定要big5轉utf-8來呈獻,
又要避免錯誤訊息,
就只好丟給piconv去做出結果再吃回來。

希望有更好的解決方法!

cfc iT邦新手 3 級‧ 2008-09-30 14:07:21 檢舉

我目前是的確有遇到這問題
不過.. 沒辦法,束手無撤Orz

我要留言

立即登入留言