[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[netbsd,10098] Re: OSC 東京→ AsiaBSDcon → OSC 愛媛



On Fri, 16 Mar 2012 22:04:57 +0900, Izumi Tsutsui <tsutsui@xxxxxxxxxxxxxxx> wrote:

>> > $ mikutter
>> > /usr/pkg/lib/ruby/1.9/json/common.rb:146:in `encode': "\xE6" on US-ASCII
>> > (Encoding::InvalidByteSequenceError)
>> > で、LANG=ja_JP.eucJP でも、"\xE6"が異なるだけで、同様のエラーになりま
>> > す。会場で動くようになると面白そうです。
>>
>> 僕は、(setenv LANG ja_JP.UTF-8;mikutter) とかで起動してます。
>
> ruby や json あたりのルールが全然わからんのですが、
> /usr/pkg/share/mikutter/core/addon/openimg/pattern_file.json
> の中にある "携帯百景" が UTF-8 で書いてあるので
> 端末の設定関係なく LANG=ja_JP.UTF-8 でないと起動しないっぽいです。

外部との入出力のエンコーディングがプログラム中で指定されていないため、
最終的にはロケールから推測して動作している、というところです。
なので、utf-8 なロケール以外では、US-ASCII とか EUC-JP として解釈され、
不正な文字が含まれていると判断され、そこで落ちてしまう。

/usr/pkg/share/mikutter/core/utils.rb の file_get_contents(fn) で
   open(fn, 'r')
になってるのを
   open(fn, 'r:utf-8')
にすればいけますが、影響範囲がわからないです。

とりあえず、mikutter-0.1.0.697nb1 では、起動スクリプトの shebang に -Ku を入れてて、
ロケールの設定が無いとか、ja_JP.eucJP でも動くことは確認しています。

-- お役に立てない(^^;
OBATA Akio / obata@xxxxxxx
せかいは ひろがる ちきゅーは まわる。