😅
AppleScriptからRubyを実行して文字化けした話
AppleScriptからRubyを実行してその結果を表示したら文字化していました。
正確にはユニコードエスケープされた状態で表示されました。
期待-->"123億4500万0000"
表示-->"123\u51044500\u4E070000"
Rubyをターミナルで実行すると期待通り"123億4500万0000"と表示されます。
AppleScript側でユニコードエスケープをデコードできないか色々試した結果、原因はRubyのコードにあることが分かりました。
Rubyコードの結果出力をデバッグ等で使用する"p"から一般的な出力の"puts"に変えることで期待通り"123億4500万0000"と表示される様になりました。
p hyakuman(ARGV[0]) #誤 --> "123\u51044500\u4E070000"
puts hyakuman(ARGV[0]) #正 --> "123億4500万0000"
AppleScriptからRubyのスクリプトを実行する
-- AppleScriptからRubyのスクリプトを実行する
set dialogTitle to "百万円単位の数字を分かりやすく変換する"
set textField to display dialog "数値を入力してください" with title dialogTitle default answer ""
set val to text returned of textField
property which_ruby : "/Users/ユーザー名/.rbenv/shims/ruby"
set res to do shell script which_ruby & " /Users/ユーザー名/myapp/hyakuman.rb " & val
display alert res
Discussion