Rubyのrequireの挙動に関して教えていただきたく。環境は以下のとおりです。
Ruby 2.5.3 x64
Windows 7

以下のプログラムを

#! ruby253 -EWindows-31J
# -*- mode:ruby; coding:Windows-31J -*-
$:.push(".")
require "sub"

C:\test\testに置いて実行すると正常に動作しますが、C:\test\テストに置いて実行するとsub.rbがcannot load such fileになります。

同様に以下のプログラムを

#! ruby253 -EWindows-31J
# -*- mode:ruby; coding:Windows-31J -*-
$:.push(File.dirname(__FILE__))
require "sub"

C:\test\testに置いて実行すると正常に動作しますが、C:\test\テストに置いて実行するとstack level too deepエラーが発生します。

$:に日本語を含むパスが入ると挙動がおかしくなるように見えます。どなたか回避方法をご存知でしたら教えていただけないでしょうか。よろしくお願いします。