[samba-jp:20396] おかしなエンコードに伴う文字化けの場合は? (Re: Re: Vine 3.2、Windows、Proftpd、Samba混合環境の文字化けについて)

Kenichi Okuyama okuyamak @ dd.iij4u.or.jp
2008年 9月 26日 (金) 22:25:43 JST


奥山です。

>>>>> "森山" == MORIYAMA Masayuki <moriyama @ miraclelinux.com> writes:
森山> ■ファイル名文字コード変換ツールについて
森山> ファイル名の文字コード変換であれば convmv コマンドを使
森山> うのが良いかもしれません。

これらのツールはファイル名が「正常にエンコードされて」格納されている
場合は使えるのですが、「異常なエンコード」の場合には役に立ちません。
で、質問はそういう「異常なエンコード」の内、よくありそうなパターンを

- 集めているサイト
- 自動分析するツール
- パターンを指定すると、文字コード変換の一環として「文字化けを直して
  くれる」ツール

などを、誰かしりませんか? というものです。



先日、あるお客様の環境で、 Win98 を使っていた頃にサーバに保存したファ
イル名が文字化けした、というトラブルの対応をしました。ファイル名を見
た所、エンコード的には utf8 のようだったのですが、内容が変。かなり七
転八倒した上で発見したのは:

1) ファイルシステムからやってくるファイル名(Pathではなくそのファイル
   名だけ)を utf8 として解釈し、これを UCS2 に変換する。

2) 1 で得られたUCS2 バイト列を、今度は16bitの「Word」の羅列とし、それ
   らが『実は1byteの文字コードを現す(上位8bitを消す)』と解釈する(よう
   するに1バイトおきに出てくる 0x00 を消す)

3) 2 が済むと、SJISの文字列が表れる


なんとなく。98がSJISで送りつけてきたバイト列を、誰かが誤解釈したのか
設定を間違えたのかして、UTF8で書いちゃった。そのパス名を送り返すとき
も、たまたまうまくいっちゃった。で、98マシンが引退して、NT系になった
ら、いきなり読めなくなった、っぽいのですが…。

いやらしかったのは utf8->utf16/16->8 と2段階変換が必要だった事。一方
で、この手のミスはあちらこちらに存在していそうです。


で、自動分析か、あるいは自動でなくても分析の手伝いをしてくれるソフト
と、「正常な」一貫性のあるエンコードに直してくれるソフトはないものか、
と探しているのです。

# エンコードが正常かおかしいか、も分析できるといいのだけれど…。
# そうすれば、問題になる前にチェックできますからね。


どなたか、「これ」と言うものを知っていたら、教えてください。
よろしく。
---- 
奥山 健一[煤背会:No.0x00000001]
#URL http://www.dd.iij4u.or.jp/~okuyamak/
#    http://developer.osdl.org/dev/doubt/
#今日のお言葉『酸化チタン』:確か光で水を分解できたよね…
#空気中の湿度を分解して水と酸素にしてくれないかなぁ(T.T)。




samba-jp メーリングリストの案内