いつもお世話になっております。
Railsで、linux上にある特殊文字「゛」が入ったファイルを読み込み、処理を行いたいと考えております。
以下のようにまず存在確認を行っているのですが、ここがtrueにならずこちらに質問させていただきました。
本来の動きとしては、データベース上からファイル名を取得し、file_nameに格納し、そこからpathを作ってexistsで確認という流れなのですが、とりあえずパス全体をシングルクオーテで囲んだとしてもexistsでtrue判定されません。
「゛」だけでなく「(」や「)」といった文字が入っているファイルも読むことができないのですが、File.openやFile.exist?する場合には何か特別な処理が必要なのでしょうか。
ググってもあまりでてこず、こちらに質問させていただきました。
参考になるサイトでも構いませんので、適切な方法をご教示いただけますと幸いです。
よろしくお願いいたします。
# file_name = 'シンテ゛レラの憂鬱.mp3' # file_path ="/home/rails/mp3data/#{file_name}" file_path = '/home/rails/mp3data/シンテ゛レラの憂鬱.mp3' if File.exist?(file_path) p "存在" music_data = File.open(file_path) # その他いろいろ処理 # ・ # ・ # ・ else p "存在しない" end
環境
Amazon Linux release 2 (Karoo)
Rails 5.2.3
Ruby version: 2.6.1