[#43970] 次の1.8.6 — Urabe Shyouhei <shyouhei@...>
卜部です。
8 messages
2007/09/01
[#43980] MacOS X で irb が走らない — "Hideo Konami" <konami@...>
小波です。
9 messages
2007/09/02
[#43987] オンラインマニュアル→[最近の更新] →「Sort alphabetically] — take_tk <ggb03124@...>
たけ(tk)です
6 messages
2007/09/03
[#43988] Re: オンラインマニュアル→[最近の更新] →「Sort alphabetically]
— SATOH Fumiyasu <fumiyas@...>
2007/09/03
At Mon, 3 Sep 2007 15:37:29 +0900,
[#43996] ある日付の最終時刻の求め方 (秒単位) — SATOH Fumiyasu <fumiyas@...>
さとうふみやす @ OSS テクノロジです。
14 messages
2007/09/05
[#43998] Re: ある日付の最終時刻の求め方 (秒単位)
— "GOTO Kentaro" <gotoken@...>
2007/09/05
07/09/05 に SATOH Fumiyasu<fumiyas@osstech.jp> さんは書きました:
[#44000] Re: ある日付の最終時刻の求め方 (秒単位)
— Urabe Shyouhei <shyouhei@...>
2007/09/05
GOTO Kentaro wrote:
[#44025] iconvの多言語対応状況に関する質問 — "S_Konno(今野 滋)" <sk@...>
今野です。お世話になっております。
5 messages
2007/09/13
[#44032] rubyインストールガイドMacOSX更新しました⇒MacPortsでのrubyインストール:Tkを有効に — "S_Konno(今野 滋)" <sk@...>
今野です。お世話になっております。
4 messages
2007/09/15
[#44037] スコープについての質問 — "142QN4969@..." <ohrsts@...>
小原です。御世話になっています。
6 messages
2007/09/16
[#44044] ApacheでVirtual hostを使わない設定でRailsを動かしたい — "paptimusx scirocco" <paptimusx@...>
ApacheでVirtual hostを使わない設定でRailsを動かしたいのですが、
4 messages
2007/09/20
[ruby-list:44026] Re: iconvの多言語対応状況に関する質問
From:
irodori@...
Date:
2007-09-13 08:43:49 UTC
List:
ruby-list #44026
本庄と申します。
At Thu, 13 Sep 2007 16:32:39 +0900,
S_Konno(今野 滋) wrote:
> iconvによる文字コード変換に関する質問です。
> 海外のwebpageの文字コードをユニコードに変換する際、直接のコマンド
>
> `curl http://www.xinhuanet.com/ | iconv -f GB2312 -t UTF-8`
>
> では、変換に成功するのですが、
>
> require "iconv"
> Iconv.iconv("UTF8", "GB2312" , `curl http://www.xinhuanet.com/`)
>
> では、失敗することがあります。
当方も Mac OS X ですが、上記 URI でしたら、iconv を直接実行してもエラー
になります。
curl のメッセージに埋もれていたのではないでしょうか?
$ ruby -v
ruby 1.8.2 (2004-12-25) [powerpc-darwin8.0]
$ wget -q -O - http://www.xinhuanet.com/ | iconv -f GB2312 -t UTF-8 > /dev/null
iconv: (stdin): cannot convert
> そこで、質問です
> 1. システムとruby(ruby1.6.8以降)の間で扱える文字コードの差分を知る方法は何かないでしょうか?
システムの実装に依存するとありますから、リンクしている libiconv のサポー
ト範囲と全く同じと考えて良いと思います。
> 2. require "iconv" の方で、エラーの発生を回避する方法は何かないでしょうか?
Iconv::IllegalSequence 例外をキャッチできるので、該当文字を無視するか
自力で変換して、残りの文字列を再度 iconv することになると思います。
こんな感じでしょうか?
#! /usr/bin/env ruby
require 'iconv'
require 'net/http'
instr = Net::HTTP.get('www.xinhuanet.com', '/')
conv = Iconv.new('UTF-8', 'GB2312')
outstr = ''
puts 'input: ' + instr.length.to_s + 'bytes.'
begin
outstr += conv.iconv(instr)
rescue Iconv::IllegalSequence
outstr += $!.success
puts outstr.length.to_s + 'bytes converted (catch exception).'
# エラー文字を処理後、残りの文字列を instr にセットする
# ここでは GB2312 のコード体型がわからないので、
# とりあえず 2byte 飛ばす
instr = $!.failed[2,$!.failed.length]
retry
end
puts outstr.length.to_s + 'bytes converted (finished).'
conv.close()
--
Eiji Honjoh