[#42243] コミュニティと宗教の分離について — Beyond <beyond@...>

14 messages 2006/05/21

[#42267] メニューのループについて — リックス <rubyer4649@...>

りっくすです

21 messages 2006/05/27

[#42301] Re: メニューのループについて — "conundrum /" <conundrum@...>

conundrumです。

11 messages 2006/05/28

[ruby-list:42300] Re: mime_header.rb

From: "NARUSE, Yui" <naruse@...>
Date: 2006-05-28 17:44:51 UTC
List: ruby-list #42300
成瀬です。

しん wrote:
>> そういえば、 Ruby on Rails で使われている ActionMailer では、
>> ヘッダを UTF-8 で B エンコードするという話をききました。
>> 日本以外だと UTF-8 が普通なんでしょうかね?
> 
> Windowsでは日本もそうなりつつあるのかも。

Gmailが日本でのサービス当初、送信のデフォルトがUTF-8で、
一時騒ぎになりましたね。
それ以外だとまだまだ日本では ISO-2022-JP な気がします。

> Qエンコードを取りこむのはそう厄介ではないですが
> 他の文字セットを取りこむのは厄介になりそうだな。。。。。

厄介というか、コスト的に難しいのでは。
折り返しを考えると頭痛がしそうです。
encoded-word はそれ単体で解釈できないといけないため、
charset ごとに文字の切れ目がどこかを判断しないといけませんから・・・。

うまく設計すればバックトラックしながらなんとかできる気もしますが、
「面倒だから ISO-2022-JP と UTF-8 だけ。
 対応してほしかったらパッチ投げて」
でよいかなーと。

> 日本語限定なら UTF-8 が来ても同じ仕様でできるけど(かな? nkfしだい)
nkf はいけますね。しかし、

> iso-8859-1 もOKよ、 ってするには、
> 文字コード変換を要するかどうか、ってパラメータでやる?
ISO-8859-1 の場合は文字コードの自動判定が効かないわけで、
from と to を原則両方指定してもらうのがよいのでは。
あとは例えば以下のような感じに。

def mime_encode(charset=:auto, input_charset=:auto)
  if charset == :auto && input_charset=:auto
    charset= input_charset = 'ISO-2022-JP'
  elsif charset == :auto
    charset = input_charset
  elsif input_charset == :auto
    input_charset = charset
  else
    # charset conversion...
  end
  unless ['UTF-8', 'ISO-2022-JP'].include(charset.upcase)
    raise "mime_header.rb doesn't support '%s'." % charset
  end
  # ...
end

なんかデフォルトが ISO-2022-JP なのに違和感がありますね。。。
input_charset が日本の語場合のデフォルトを ISO-2022-JP にする、
とかのほうがいいかなぁ。

  if charset == :auto && input_charset=:auto
    charset= input_charset = 'UTF-8'
  elsif charset == :auto
    if ['ISO-2022-JP', 'Shift_JIS', 'EUC-JP'].include(input_charset)
      charset = ISO-2022-JP
    else
      charset = input_charset
    end
  end

日本語での利便性と、日本以外の利便性をどう両立するかなやましそうです。

-- 
NARUSE, Yui  <naruse@airemix.com>
DBDB A476 FDBD 9450 02CD 0EFC BCE3 C388 472E C1EA

In This Thread