LoginSignup
0
0

【メモ】CIFS (SMB) で日本語が文字化けするときはシステムロケールも確認

Posted at

事象

同じオプションでLinuxからWindows 11の共有フォルダをmount.cifsでマウントしたとき、片方のLinuxでは日本語のファイル名が正しく表示されるのに、もう一台では文字化け(エスケープされた状態, $\123\456...)で表示される。

環境

  • Arch Linux (最新版)
  • (Samba 4.19.2)
  • Windows 11 (23H2)

原因と解法

文字化けするマシンのシステムロケール (/etc/locale.conf) がLANG=C.UTF-8のままだったので、# localectl set-locale LANG=ja_JP.UTF-8で日本語ロケールに修正したら解決した。

効かなかったこと

  • [ダメ] mount.cifsのオプションにiocharset=cp932を指定 ... 表示は変わるがエスケープは解けない。
  • [ダメ] mount.cifsのオプションにcodepage=cp932を指定 ... そもそもcodepageオプションはかなり前に廃止されている様子。

感想

ユーザのロケールはLC_ALL=ja_JP.UTF-8になっていたので気が付かなかった…こんなこともあるのですね。ファイル名におけるロケールの取り扱いがどうなっているのか気になってきました。

  • この記事によれば、カーネル(ファイルシステム)がファイルを操作する際にはファイル名のコードページ・ロケールは関係ない様子。
  • となると、lsがファイル名を表示する際にロケールを見ながら変換しているのだろうが、そうするとなぜユーザのロケールが無視されたのだろうか…わからん。
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0