[Subject Prev][Subject Next][Thread Prev][Thread Next][Subject Index][Thread Index]

[linux-users:49382] Re: sambaの文字化け


馬場@横河電機です。

Ikuo Yaegashi wrote:

こんにちは。

> 具体的には、「構」という文字が入ったファイル名のファイルをLinux側(sharedir
> というディレクトリ)
> にコピーすると、「\\Linuxマシン名\sharedirは存在しません。作成しますか?」
> と聞かれ、「はい」と答えても「作成、置換はできません。既に存在するファイルを
> 作成できません」
> ときて、コピーできません。
>
> 日本語は、EUC、SJISどちらのコードでもsambaをmakeしてみて試しましたが、いっ
> しょでした。
> どなたかこのような現象に出会ったことはありませんでしょうか?

僕は Samba を hex で使用しているので,SJISでの現象は体験していません。

'構' というは SJISコードでは,8d5c になります。ここで 5c は '\' と同じコードです。
調子が悪い理由は,この 5c のためでしょう。もしそうなら,'能' という文字でもおか
しいのではないですか?

僕は SJIS で運用できるのか,それとも絶対に出来ないのかという事に関して自分
で確認をした事がありません。

Samba-2.03 を -DKANJI オプション無しでコンパイルして,次の設定を smb.conf
のグローバルセクションに書いて Samba (nmbd と smbd)を再起動しても駄目でしょ
うか?

  client code page=932
  coding system = SJIS

これが駄目でも,少なくとも  coding system としてEUC や HEX, CAP を指定して
運用すれば問題ないと思いますよ。それらコードでは,ファイル名にコード 5c を含む
事は無いですから。

さて,SJISの場合も含め,coding system で EUC,HEX,CAPなどの指定を有効に
して使用するためには,client code page で 932 を設定しなくてはならないようです。

マニュアルには,
「Only useful if "client code page" is set to 932 (Japanese Shift-JIS).」とありま
す。


また,Samba-2.03 では -DKANJI を付けたコンパイルはしない方が良いでしょう。

samba-2.0.3/source/lib/kanji.c の中には次のようなコメントがあります。

/*
 * Kanji is treated differently here due to historical accident of
 * it being the first non-English codepage added to Samba.
 * The define 'KANJI' is being overloaded to mean 'use kanji codepage
 * by default' and also 'this is the filename-to-disk conversion
 * method to use'. This really should be removed and all control
 * over this left in the smb.conf parameters 'client codepage'
 * and 'coding system'.
 */

つまり,「#ifndef KANJI 」で処理がわかれているし,
「client code page」とか「coding system」は無効になるのです。

以下,参考。
● client code page (G)
       This parameter specifies the DOS code page that the clients
       accessing Samba are using. To determine what code page a Windows
       or DOS client is using, open a DOS command prompt and type the
       command "chcp". This will output the code page. The default for
       USA MS-DOS, Windows 95, and Windows NT releases is code page 437.
       The default for western european releases of the above operating
       systems is code page 850.
       This parameter tells smbd which of the codepage.XXX files to
       dynamically load on startup. These files, described more fully in
       the manual page make_smbcodepage (1), tell smbd how to map lower
       to upper case characters to provide the case insensitivity of
       filenames that Windows clients expect.
       Samba currently ships with the following code page files :
          + Code Page 437 - MS-DOS Latin US
          + Code Page 737 - Windows '95 Greek
          + Code Page 850 - MS-DOS Latin 1
          + Code Page 852 - MS-DOS Latin 2
          + Code Page 861 - MS-DOS Icelandic
          + Code Page 866 - MS-DOS Cyrillic
          + Code Page 932 - MS-DOS Japanese SJIS
          + Code Page 936 - MS-DOS Simplified Chinese
          + Code Page 949 - MS-DOS Korean Hangul
          + Code Page 950 - MS-DOS Traditional Chinese

● codingsystem (G)
       This parameter is used to determine how incoming Shift-JIS
       Japanese characters are mapped from the incoming "client code
       page" used by the client, into file names in the UNIX filesystem.
       Only useful if "client code page" is set to 932 (Japanese
       Shift-JIS).
          + SJIS Shift-JIS. Does no conversion of the incoming filename.
          + JIS8, J8BB, J8BH, J8 _at_ B, J8 _at_ J, J8 _at_ H Convert from incoming
            Shift-JIS to eight bit JIS code with different shift-in,
            shift out codes.
          + JIS7, J7BB, J7BH, J7 _at_ B, J7 _at_ J, J7 _at_ H Convert from incoming
            Shift-JIS to seven bit JIS code with different shift-in,
            shift out codes.
          + JUNET, JUBB, JUBH, JU _at_ B, JU _at_ J, JU _at_ H Convert from incoming
            Shift-JIS to JUNET code with different shift-in, shift out
            codes.
          + EUC Convert an incoming Shift-JIS character to EUC code.
          + HEX Convert an incoming Shift-JIS character to a 3 byte hex
            representation, i.e. :AB.
          + CAP Convert an incoming Shift-JIS character to the 3 byte hex
            representation used by the Columbia AppleTalk Program (CAP),
            i.e. :AB. This is used for compatibility between Samba and
            CAP.
以上

この情報があなたの探していたものかどうか選択してください。
yes/まさにこれだ!   no/違うなぁ   part/一部見つかった   try/これで試してみる

あなたが探していた情報はどのようなことか、ご自由に記入下さい。特に「まさにこれだ!」と言う場合は記入をお願いします。
例:「複数のマシンからCATV経由でipmasqueradeを利用してWebを参照したい場合の設定について」
References: