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

[0286] Re: Japanese filename on FreeBSD 4.5



こんにちは、山田です。

>> この状態で、Windowsから見たwebフォルダに日本語ファイル名のついた
>> ファイルを投げると文字化けしてしまいます。
>> [snip]
>> 要するにiconvかな…という気がするんですが、何かお分かりになる方が
>> いればサジェストをお願いします。

ちょっと SJIS のままスルーしてしまっている原因の見当はつきませんが、
とりあえず LogLevel debug にすると最終的に変換を諦めた(適切な
コンバータが見つからなかった)のか、変換中に失敗したのかを見ることが
できます。

あとは、iconv(3) とセットで iconv(1) も入っていると思うので、

  $ iconv -f SJIS -t EUC-JP < infile > outfile

などとして変換できるかどうか、というところですね。

# オプションや実際に使えるエンコーディング名は異なるかもしれません

> 以前手元の環境(FreeBSD 4.5stable)で試したところ、iconv() ルーチン
> あたりで無限ループに陥りました。

もしモジュール中で無限ループするとしたら iconv の変換処理結果を
チェックする所が怪しいです。手元のマニュアルでは iconv の仕様は

  1. 変換できた時は非可逆な変換を行った件数を返す。変換待ちバッファの
     長さは 0 にセットされる。
  2. 変換できない、もしくはエラーの際は (size_t)(-1) を返す。細かい
     原因は errno にセットされる。

となっていますが、これがループする環境でも期待できるかどうか、
ちょっと man 3 iconv で調べてみて頂けないでしょうか?

--
Taisuke Yamada <tai@xxxxxxxxx>
Internet Initiative Japan Inc., Technical Planning Division